Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 程序允许用户输入数字,直到输入零,然后打印总数、输入数和平均值_Java_Loops - Fatal编程技术网

Java 程序允许用户输入数字,直到输入零,然后打印总数、输入数和平均值

Java 程序允许用户输入数字,直到输入零,然后打印总数、输入数和平均值,java,loops,Java,Loops,我能够让程序询问数字,直到输入零,当输入零时,程序显示总计、条目和平均值。但给出的值不正确 这是我的密码: import java.util.Scanner; public class Question14 { public static void main (String [] args){ double number = 0; double average = 0; int count = 0; double sum

我能够让程序询问数字,直到输入零,当输入零时,程序显示总计、条目和平均值。但给出的值不正确

这是我的密码:

import java.util.Scanner;

public class Question14 {

    public static void main (String [] args){
        double number = 0;
        double average = 0;
        int count = 0;
        double sum = 0;

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

        Scanner sc = new Scanner(System.in);
        number = sc.nextInt();

        while (number > 0){
            System.out.print("enter a number: ");
            number = sc.nextInt();
            count++;
            sum += number;
            average = sum/count;
        }

        if (number == 0){
            System.out.println("total: " + sum);
            System.out.println("number of entries: " + count);
            System.out.println("average: " + average);
        }
    }
}
就这么做吧:

    int input = 0, sum = 0, i = 0;

    Scanner sc = new Scanner(System.in);
    do {
        System.out.println("Enter a number: ");
        input = sc.nextInt();
        sum += input;
        i++;
    } while (input != 0);

    System.out.println("Sum: " + sum);
    System.out.println("Avg: " + (double) (sum/i));

您跳过了第一个数字,即循环前读取的数字。此外,在循环结束之前,不需要计算平均值。您似乎在丢弃输入的第一个数字。在他们输入第二个数字之前,您不会开始加法和计数。
number>0
并不意味着直到输入了
0
。正确的方法是
number!=0
,否则任何负值也将退出循环。如果您想打印您输入的数字,只需打印它,它将平均值向下舍入。可能不是我们想要的。而且,它包括平均值中的最后零,这也可能不是我们想要的。因此,例如,如果您希望得到
6
7
的平均值,这将显示
4
(即
(6+7+0)/3
,向下舍入);所以你得到了一个不全面的答案。