如何计算从控制台读取的整数序列的平均值?

时间:2018-10-12 18:24:54

标签: java eclipse average

我的代码中缺少什么来计算用户输入的数字的平均值?

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int n;
    float average;
    do {
        System.out.print("Enter a number: ");
        n = scanner.nextInt();
        System.out.println("Your number is " + n);
    } while (n != 0);

    if (n == 0) {
        System.out.println("The average is : " + n);
    }

    scanner.close();
}

}

当用户输入“ 0”时,程序应计算用户输入的数字的平均值,这就是为什么我写了“ while(n!= 0)”的原因。

2 个答案:

答案 0 :(得分:1)

您应该执行以下操作: 请注意,由于您还有一个数字(零),因此在通过删除平均值来计算平均值时必须考虑它,因为您要求0才能完成程序。

公共课程Teste {

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int n;
    double average = 0;
    int qtdNums = 0;
    do {
        System.out.print("Enter a number: ");
        n = scanner.nextInt();
        System.out.println("Your number is " + n);

        average = average + n;
        qtdNums++;
    } while (n != 0);

    if (n == 0) {
        System.out.println("The average is : " + average / (qtdNums - 1));
    }

    scanner.close();
}
}

答案 1 :(得分:0)

您实际上并没有使用要阅读的数字。优秀的编辑器会在运行之前告诉您。我会考虑使用Eclipse IDE。您将想要做类似于jhenrique建议的操作。我想说最好将数字加为整数,然后再进行转换,这样就不会在浮点加法上失去准确性,这在某些情况下可能会给您带来很多麻烦(但在这里您可能还可以)。这是我建议的代码,根据jhenrique的答案进行了修改:

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int n;
    int sum = 0;
    int count = 0;
    do {
        System.out.print("Enter a number: ");
        n = scanner.nextInt();
        System.out.println("Your number is " + n);

        sum += n;
        count++;
    } while (n != 0);

    System.out.println("The average is : " + ((double) sum) / (count - 1));

    scanner.close();
}

double类似于float,但更准确。在循环中,我将每个读取的数字加到sum上,然后除以最后读取的事物数,得出平均值。