2016-03-30 5 views
0

ちょっと、ループ終了値-1を無視してユーザー入力から最小値と最大値を計算しようとしています。入力の最小値を計算するときに-1を無視する方法以外のすべてを行う方法を理解しています。ループ終了番号(-1)を除外してユーザー入力から最小値を計算する

int value = 0; 
    int max = value; 
    int min = max; 

    Scanner scan = new Scanner(System.in); 

    while (value != -1) { 
     System.out.print("Value: "); 
     value = scan.nextInt(); 
     if (min > value) { 
     min = value;  } 

     if (max < value) { 
      max = value; } 
    } 

    System.out.println("Min = " + min); 
    System.out.println("Min = " + min); 

-1を無視して、私は最小値を計算するにはどうすればよい: ここで私はこれまで持っているコードですか?

ありがとうございました。

答えて

1

あなたは決して終わることのないループにループを回し、そしてbreakを追加し、終了番号が検出されたときに:また、固定

Scanner scan = new Scanner(System.in); 

int max = Integer.MIN_VALUE; 
int min = Integer.MAX_VALUE; 
for (;;) { // never-ending loop 
    System.out.print("Value: "); 
    if (! scan.hasNextInt()) { 
     System.out.println("** Invalid input **"); 
     scan.nextLine(); // discard invalid input 
     continue; // loop back to prompt again 
    } 
    int value = scan.nextInt(); 
    if (value == -1) // termination number 
     break; 
    if (value < min) 
     min = value; 
    else if (value > max) 
     max = value; 
} 
System.out.println("Min = " + min); 
System.out.println("Max = " + max); 

:そうminmaxmin

  • 初期化しますおそらくいつも0
  • Scanner入力の検証(したがってプログラムは悪い入力にイオン)
  • maxの印刷(2回minを印刷した)
  • インデント(SOコード構造が人間の読者に明瞭に見える)
+0

代わりに、一方のあなたがループに空を使用する何らかの理由(真)ループ?私は両方のイディオムを見たことがあり、おそらくプログラマーの好みにすぎないと思っていました。 –

+0

@AustinDそれは完全にプログラマーの好みです。 http://stackoverflow.com/questions/8880870/java-for-vs-whiletrueを参照してください。 – Andreas

0

if (min > value)で始まる行の直前にif (value == -1) break;を追加します。これにより、端末(-1)文字が読み取られるとループが壊れます。

ループ状態をわかりやすくするために、while(true)に変更することができます。これは、この状況のかなり一般的なイディオムです。

関連する問題