-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 回答