2

大家好,所以我一直在尝试为我的 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.
4

3 回答 3

7

input在最初的分配之后你永远不会改变;循环将永远持续下去。我想你又忘记打电话scanner.nextDouble()了。

于 2012-09-24T20:45:55.080 回答
5

input最初检索它后,您不会接受。

scanner.nextDouble()分配给numNegativenumPositive-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;

        }

    }
于 2012-09-24T20:46:00.370 回答
1

您没有为input循环内的任何地方分配值。所以,初始值仍然存在,循环不会退出。

于 2012-09-24T20:48:12.553 回答