程序从扫描仪读取值,直到给出值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;
}
}
}
}
答案 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
我不知道是否有更好的方法可以做到这一点,但我会怎样做,我喜欢它。