有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java有人能告诉我为什么我的程序不能工作吗?

程序从扫描器读取值,直到给出值0,该过程结束。只有当所有给定的数字都是整数时,程序才会编译总和。在所有其他情况下(并非所有值都是整数),程序不会给出任何结果。 所以我注意到我的程序给出了整数的和,即使给出了其他非整数值,有时当它们都是给定的整数时,它不会只显示一个数字或其他东西的实和

  import java.util.Scanner;
public class Testing3{
    public static void main(String[] args) {
        int sum1 = 0;
        Scanner input = new Scanner(System.in);
        System.out.println("Enter number");
        String number = input.nextLine();
        int value =Integer.parseInt(number);
        while(true) {
            if (value!=0) {
                number = input.nextLine();
                if (Math.round(value)==value)//condition to integer{
                    sum1 = sum1 + value;
            } else {
                System.out.println(sum1);
                break;
            }
        }
    }
}

共 (2) 个答案

  1. # 1 楼答案

    我认为你的问题在于你测试整数的地方。我认为x mod 1==0不适合这里。当我被要求检查一个数字是否为整数时,我会将该数字四舍五入,然后检查它是否等于原始数字

    假设我们有一个名为x的double变量,如果x是整数,则该变量的计算结果为true

    Math.round(x) == x
    

    我不知道是否有更好的方法,但我会这样做,我喜欢

  2. # 2 楼答案

    首先,使用while(true)for(;;)在无限循环中进行make

    第二种方法是使用nextInt()来读取整数而不是double,因为您不需要double。或者,使用readLine读取字符串,并使用Integer.parseInt检查其有效性

    第三,您有一个语法错误(因此它不应该编译)。在else附近有一个无与伦比的右括号

    最后,删除if (number != 0),因为这将导致程序在循环中不断重复,而不会永远执行任何操作。将循环的内部更改为:

    number = input.nextInt();
    if (number != 0){
        sum1 = sum1 + number; //or use sum1 += number
    } else {
        System.out.println(sum1);
        break;
    }