Java 在二维数组中添加每列

Java 在二维数组中添加每列,java,arrays,Java,Arrays,在2D数组中添加每列时遇到问题。似乎我的代码没有正确添加列,因此我无法计算正确的平均值。我可以添加并获得每行的平均值,但我不知道列的情况。我的代码中一定有点小错误,请帮我找到 另外,我的数组是int book[3][4],每个列都有学生,所以我总共有4个学生,我也有4个列 public void AverageStudent(int[][] book) //columns { double average1 = 0; double sum1 = 0; fo

在2D数组中添加每列时遇到问题。似乎我的代码没有正确添加列,因此我无法计算正确的平均值。我可以添加并获得每行的平均值,但我不知道列的情况。我的代码中一定有点小错误,请帮我找到


另外,我的数组是int book[3][4],每个列都有学生,所以我总共有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;
            }
        }
}
public void AverageStudent(int[]book)//列
{
双平均值1=0;
双sum1=0;
for(int i=0;i
这是上面代码给出的输出

1234
1234
1234
测试1的平均值为2.5 测试2的平均值为2.5 测试3的平均值为2.5 学生一的平均成绩是0.3333 学生2的平均成绩为0.6666 学生3的平均成绩是1.0 四年级学生的平均成绩是1.3333


您需要在第一个
for
循环中声明
average1
sum1
。目前,它们在每个元素之后都会被重置,理想情况下应该在每行之后重置。下面的代码工作正常

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;
    }
}
public void average学生(int[]book){
for(int i=0;i
您在这句话中的逻辑错误:
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);
          }
       }
public void AverageStudent(int[]book)//列
{
双平均值1,sum1;
for(int i=0;i
我的数组是int book[3][4],每个列都有学生,所以我总共有4个学生,我也有4个列。然而,上面的代码只打印出3名学生,并且没有计算出正确的平均值@DarshanMehtaHowever,上面的代码只将“线程中的异常”main“java.lang.ArrayIndexOutOfBoundsException:3”@Mohammadoghilk现在用红色下划线,所以我不必移动“System.out.println”(“学生“+(k+1)+”的平均值是“+average1”);“到第二个for循环中吗@Mohammadoghli你有逻辑错误:sum1+=book[i][k]你是什么意思?这正是我所需要的。非常感谢。