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;
}
}
}
}
# 1 楼答案
我认为你的问题在于你测试整数的地方。我认为x mod 1==0不适合这里。当我被要求检查一个数字是否为整数时,我会将该数字四舍五入,然后检查它是否等于原始数字
假设我们有一个名为x的
double
变量,如果x是整数,则该变量的计算结果为true
:我不知道是否有更好的方法,但我会这样做,我喜欢
# 2 楼答案
首先,使用
while(true)
或for(;;)
在无限循环中进行make第二种方法是使用
nextInt()
来读取整数而不是double,因为您不需要double。或者,使用readLine
读取字符串,并使用Integer.parseInt
检查其有效性第三,您有一个语法错误(因此它不应该编译)。在else附近有一个无与伦比的右括号
最后,删除
if (number != 0)
,因为这将导致程序在循环中不断重复,而不会永远执行任何操作。将循环的内部更改为: