首页 > 解决方案 > 计算二维数组中每一列的平均值的函数。线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:3

问题描述

我有一个计算每列平均值的函数,但是当我运行它时,它给了我:线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 3

// function to calculate the average value of columns of the given matrix
static void povprecje_stolpci(double matrix[][]) {
    int i, j;
    double zbir = 0, prosek = 0; // prosek - variable for average
    for (i = 0; i < matrix.length; i++) {
        for (j = 0; j < matrix[i].length; j++) {
            zbir = (int) (zbir + matrix[j][i]); // zbir variable to calculate the sum of the elements in each columns
        }
        prosek = (int) (zbir / matrix[i].length); // average of the columns
        System.out.print(prosek); // printing the average
        zbir = 0; // setting the sum to 0 for the next element 
        System.out.print(" ");
    }

}

标签: javafunction

解决方案


问题在于zbir = (int) (zbir + matrix[j][i]);您需要更改的代码部分:

因为在第一个循环中,您遍历数组的行,而在内部循环中遍历列

zbir = (int) (zbir + matrix[i][j]);

完整代码:

static void povprecje_stolpci(double matrix[][]) {
    int i, j;
    double zbir = 0, prosek = 0; // prosek - variable for average
    for (i = 0; i < matrix.length; i++) {
        for (j = 0; j < matrix[i].length; j++) {
            zbir = (int) (zbir + matrix[i][j]); // zbir variable to calculate the sum of the elements in each
                                                // columns
        }
        prosek = (int) (zbir / matrix[i].length); // average of the columns
        System.out.print(prosek); // printing the average
        zbir = 0; // setting the sum to 0 for the next element
        System.out.print(" ");
    }
}

推荐阅读