-1

こんにちは、私のコードは以下の手順を実行する必要がありますが、まったく取得できません

ユーザーは、コンソールに必要なだけ正の浮動小数点数を入力できます。ゼロ (または負の数) は、入力の終わりを示します (これ以上数字を入力することはできません)。入力後、プログラムは次のように表示します  入力された最小の数値 (min)  入力された最大の数値 (max)  入力されたすべての数値の平均 (mean) 配列がわかっている場合でも、この割り当てに配列を使用しないでください。

サンプルは次のようになります

数値を入力してください: \n 1 2 3 4 5 6 0 \n 入力した数値: 6 \n 最小: 1.00 \n 最大:6.00 \n 平均: 3.50\n

数字を入力してください: \n 0 \n 数字が入力されていません。

public class LoopStatistics {

public static void main(String[] args) {

    double max, min, sum=0, input, mean=0;
    int counter = 0;

    TextIO.putln("enter numbers:");

    do
    {
        input = TextIO.getDouble();

        min = input;
        max = input;

        counter++;

        if (input > max)
            max = input;

        if ( input < min)
            min = input;

        sum = sum + input;



        } while( input != 0);
    mean = sum / counter;
    TextIO.putf("numbers entered:%d\n", counter);
    TextIO.putf("minimum:%f\n", min);
    TextIO.putf("maximum:%f\n", max);
    TextIO.putf("mean:%f", mean);





}

}
4

1 に答える 1

1

現在の/より大きいか小さいかをテストする前に、 maxand を割り当てます。minmaxmin

min = input;
max = input;

これは、その人が最後に入力したものと同じであることを意味します。

コードを整理してこれらの呼び出しを削除すると、次の結果が得られます。

public static void main(String[] args) throws Exception {
    final Scanner scanner = new Scanner(System.in);
    double max = 0;
    double min = Double.POSITIVE_INFINITY;
    double sum = 0;
    int counter = 0;
    while (true) {
        final double d = scanner.nextDouble();
        if (d <= 0) {
            break;
        }
        sum += d;
        max = Math.max(max, d);
        min = Math.min(min, d);
        ++counter;
    }
    System.out.println("Max=" + max);
    System.out.println("Min=" + min);
    System.out.println("Ave=" + sum / counter);
}
于 2013-09-21T15:43:13.413 に答える