进行了一项学校任务,以找到总和,平均数和最大数。输入和分析都必须是if循环。这是我所做的,但是总和不起作用,因此平均值是错误的,也是错误的。我可以改善什么?

    double average = 0;
    int biggest = 0;

    int [] arrayx = new int[5];
    Scanner stdIn =  new Scanner(System.in);

    for (int i = 0; i < arrayx.length; i++) {
        System.out.println("Write an integer: ");
        arrayx[i] = stdIn.nextInt();
        average += arrayx[i] /arrayx.length;

        if(biggest == 0 || arrayx[i] > biggest)
        {
            biggest = arrayx[i];
        }
    }
    System.out.println("Sum is: " + (average*arrayx.length));
    System.out.println("Average is: " + average);
    System.out.println("Biggest number is: " + biggest);
    stdIn.close();

最佳答案

问题是整数除法。

在Java中,当您将两个整数相除时,会得到一个整数(丢失小数点后的所有内容)。

即。 10 / 3 = 3

如果要10 / 3 = 3.33333,则需要将整数之一转换为双精度。

因此,而不是:

average += arrayx[i] /arrayx.length;

你想做

average += ((double) arrayx[i]) /arrayx.length;

注意:

您可以通过消除int数组(除了所见过的最大数组之外,还关心其他事情吗?)并在循环的最后进行除法,来提高解决方案的效率。

关于java - 查找数组中的总和,平均数和最大数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46837672/

10-09 00:40