2016-08-27 15 views
0

ユーザが負の値を入力したときに停止するプログラムを書き込もうとしています。しかし、ユーザーが負の値を入力しても、ループは引き続き実行されます。理由は分かりません。助けてください!Java Sentinelで制御されたループが機能しない

int input, smallest = 0, largest=0, total = 0, count = 1; 
    double avg; 

    System.out.print("Enter a number: "); 
    input = keyboard.nextInt(); 

    while(input > 0) 
    { 

     System.out.print("Enter a number: "); 
     largest = keyboard.nextInt(); 

     count++; 

     if (input > largest) 
     { 
      largest = input; 
     } 
     else 
     { 
      smallest = input; 
     }  

     total = total + largest + smallest; 

    } 


    avg = total/count; 

    System.out.println("Largest number is: " + largest); 
    System.out.println("Smallest number is: " + smallest); 
    System.out.printf("Average number is: %.2f \n", avg); 
+0

デバッガは、このような状況で何が起こっているのか探索するための優れたツールです。 –

+0

OPが 'input'に割り当てることを意図したとき、'最大 'に代入するように見えます。 – markspace

+0

一度コードを確認しましたか? –

答えて

2

ループ内でinputの値は更新されていません。

あなたはこのような何かをする必要があります。

while(input > 0) 
{ 

    System.out.print("Enter a number: "); 

    input = keyboard.nextInt(); //Update the input value for this iteration. 
    largest = input; 
    ... 
} 
関連する問題