谁能告诉我为什么我的程序不起作用?

时间:2015-10-27 10:43:23

标签: java integer

程序从扫描仪读取值,直到给出值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 个答案:

答案 0 :(得分:0)

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

第二次使用nextInt()来读取整数而不是双精度,因为你没有使用双精度数。或者,阅读包含readLine的字符串,并使用Integer.parseInt检查其有效性。

第三,你有一个语法错误(所以它不应该编译)。你在附近有一个无与伦比的近距离支撑。

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

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

答案 1 :(得分:0)

我认为你的问题出在你测试整数的地方。我不认为x mod 1 == 0在这里是正确的。当我被要求检查数字是否为整数时,我会做什么,我将数字四舍五入并检查它是否等于原始数字。

我们假设我们有一个名为x的double变量,如果x是整数,则此值为true

Math.round(x) == x

我不知道是否有更好的方法可以做到这一点,但我会怎样做,我喜欢它。