2

こんにちは、私はCSクラスの本当に簡単なカウントプログラムを書こうとしていましたが、何らかの理由で「数字を入力してください(停止するには0):」プロンプトを吐き出し続け、完全にwhile ループは無視してください。while ループ内の条件が成立しているのに、0 を入力しても while ループが停止しないのはなぜですか? 私は過去に C# をやったことがありますが、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 に答える