进行了一项学校任务,以找到总和,平均数和最大数。输入和分析都必须是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/