gpt4 book ai didi

java - 为什么我的数组的平均值不正确?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:44:58 26 4
gpt4 key购买 nike

仍在掌握 Java,直到现在我已经完成了我的任务,没有任何问题。当我计算数组内值的平均值时,我总是得到不正确的答案。这是我获取值的代码:

public static int [] inputGrades()
{
Scanner kb = new Scanner (System.in);
int [] iGrades = new int [10];
System.out.print("\nInput test scores, enter -1 when you're finished.\n");
for (int i =0; i<iGrades.length;i++)
{
iGrades[i]=kb.nextInt();
if (iGrades[i] ==-1)
{
break;
}
}
return iGrades;

然后这是我对数组的平均方法:

public static double averageArray (int [] array, int numElements)
{
int iSum= 0;
double dAverage;
for (int i=0; i<array.length; i++)
{
if (array[i]>0)
{
iSum = iSum + array[i];
}

}
dAverage = iSum / array.length;
System.out.print (dAverage);
return dAverage;

如果我输入 10、20、30、40、50、-1。我得到的平均输出是 15 而不是 30。有什么想法吗?谢谢。

最佳答案

有两个问题在起作用:

(1) 这是整数(即截断)除法:

dAverage = iSum / array.length;

你想要

dAverage = iSum / (double)array.length`;

(2) array.length始终为 10 并且在数组末尾包含零。因此,在您的示例中,您实际上计算的是 10、20、30、40、50、0、0、0、0、0 的平均值,这实际上是 15。

您需要记录用户实际输入了多少个数字,然后除以该数字。

更好的是,使用 ArrayList<Integer>而不是 int[] , 你可以完全回避这个问题。

关于java - 为什么我的数组的平均值不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27232847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com