嘿大家所以我一直在努力为我的CS课程编写一个非常简单的计数程序,但由于某种原因,它不断吐出“请输入一个数字(0停止):”提示和似乎完全无视while循环。如果满足while循环内的条件,为什么即使输入0,while循环也不会停止?我以前做过C#,但我并不熟悉Java的注意事项,所以如果Java不喜欢我做任何奇怪的事情,请告诉我。对于程序的更详细描述,它应该从用户读取负数和正数,分别输出负数和正数的总和,然后取平均值。 (显然下面只是一段有问题的代码。)
Scanner scanner = new Scanner(System.in);
double average;
double numPositive=0.0;
double numNegative=0.0;
double input = 0.0;
do
{
System.out.print("Please enter a number (0 to stop): ");
input = scanner.nextDouble();
if (input < 0.0)
{
numNegative += scanner.nextDouble();
}
else if (input > 0.0)
{
numPositive += scanner.nextDouble();
}
} while (Math.abs(input) > 1.0e-6); // make the tolerance whatever you want.
答案 0 :(得分:7)
在初次分配后,您永远不会更改input
;循环将永远持续下去。我想您忘了再次致电scanner.nextDouble()
。
答案 1 :(得分:5)
最初检索后你没有接收input
。
您的scanner.nextDouble()
分配给numNegative
和numPositive
- while
循环都未对其进行检查。
while (input != 0.0)
{
System.out.print("Please enter a number (0 to stop): ");
input = scanner.nextDouble();
if (input < 0.0)
{
numNegative += input;
}
else if (input > 0.0)
{
numPositive += input;
}
}
答案 2 :(得分:1)
您没有在循环内的任何位置为input
分配值。因此,初始值仍然存在,循环不会退出。