我在添加2D数组中的每个列时遇到问题。好像我的代码没有正确添加列,因此我无法计算正确的平均值。我能够添加并获得每行的平均值,但我不知道列。我的代码中一定有一点错误,请帮我找到。
P.S。我的数组是int book [3] [4],每个学生都是专栏,所以我总共有4个学生,所以我做了专栏。
public void AverageStudent(int[][] book) //columns
{
double average1 = 0;
double sum1 = 0;
for (int i = 0; i < book[0].length; i++)
{
for (int k = 0; k < book.length; k++)
{
sum1 += book[i][k];
average1 = sum1 / book.length;
System.out.println("The average of student " + (k+1) + " is " + average1);
sum1 = 0;
}
}
}
这是上面代码的输出。
1 2 3 4
1 2 3 4
1 2 3 4
测试1的平均值为2.5 测试2的平均值为2.5 测试3的平均值为2.5 学生1的平均值是0.3333333333333333 学生2的平均值是0.6666666666666666 学生3的平均值是1.0 学生4的平均值是1.3333333333333333
答案 0 :(得分:1)
本声明中的逻辑错误:sum1 += book[i][k];
它应该是book[k][i]
,因为i
正在对列进行迭代而k
正在迭代行。
这应该适用于每栏的学生平均成绩:
public void AverageStudent(int[][] book) //columns
{
double average1,sum1;
for (int i = 0; i < book[0].length; i++)
{ sum1 = 0;
average1 = 0;
for (int k = 0; k < book.length; k++)
{
sum1 += book[k][i];
}
average1 = sum1 / book.length;
System.out.println("The average of student " + (i+1) + " is " + average1);
}
}
答案 1 :(得分:-1)
您需要在第一个average1
循环内声明sum1
和for
。目前,它们在每个元素之后不断重置,理想情况下应该在每一行之后发生。下面的代码工作正常。
public void AverageStudent(int[][] book) {
for (int i = 0; i < book.length; i++) {
double average1 = 0;
double sum1 = 0;
for (int k = 0; k < book[i].length; k++) {
sum1 += book[i][k];
}
average1 = sum1 / book[i].length;
System.out.println("The average of student " + (i + 1) + " is " + average1);
sum1 = 0;
}
}