2017-09-06 18 views
-2

このプログラムは、数字、数字、合計、最小値/最大値を読み込むことができるようになっています。数字が入力され、0が入力されるとループが停止します(0は最小/合計などに数えられません)。最小値に固定されています。私はそれが0にハードコードされているはずではないが、私はそれをループ内で最も低い値を取るように設定する方法を知っていますか?Javaで入力された数字の最小値を見つけようとしています

public class Main { 
public static void main(String[] args) 
{ 
    double sum = 0, maxVal = 0,minVal = 0, average = 0, number; 
    int count = 0; 
    Scanner input = new Scanner(System.in); 

    while((number = input.nextDouble()) != 0) 
    { 
     sum += number; 
     count++; 
     if(number < minVal) 
     { 
      minVal = number; 
     } 
     if(number > maxVal) 
     { 
      maxVal = number; 
     } 
    } 
    average = sum/count; 
    System.out.println("Total Count: " + count); 
    System.out.println("Sum: " + sum); 
    System.out.println("Mean: " + average); 
    System.out.println("Max Value: " + maxVal); 
    System.out.println("Min Value: " + minVal); 
} 

}

+0

「minValue」が0で始まる場合、更新をトリガーするには<0>が必要です。 – John3136

+0

'Double.POSITIVE_INFINITY'のように' minVal'を起動します。 –

答えて

1

値はあなたがmax(またはminを設定する負)に設定されていないだろう、正でなければあなたは、ゼロにminmaxを初期化し、ユーザーの入力と比較します。

double sum = 0, maxVal = Double.NEGATIVE_INFINITY, 
     minVal = Double.POSITIVE_INFINITY, average = 0, number; 

などの初期値を0の代わりに変更します。

0

minValmaxValの両方を最初に入力した番号で初期化してから、ループを開始することができます。

double sum = 0, maxVal, minVal, average = 0, number; 
int count = 0; 
Scanner input = new Scanner(System.in); 

maxVal = minVal = number = input.nextDouble(); 
while(number != 0) { 
    ... 
    number = input.nextDouble()) 
} 

「古典的な」テキストブックソリューションです。

関連する問題