乘以2D数组ArrayIndexOutOfBoundsException? (Java)的

时间:2017-04-09 07:59:25

标签: java matrix

我试图编写一种方法,将两个矩阵相乘,然后返回一个带有结果乘积的二维数组。例如,第一矩阵是5×2,第二矩阵是2×5.得到的矩阵应该分别是5×5矩阵。

这是我到目前为止所做的:

public static int[][] multiplyArrays(int[][] arrayA, int[][] arrayB) {
    int[][] arrayProduct = new int[arrayA.length][arrayB[0].length];

    for (int cRow = 0; cRow < arrayA.length; cRow++) {
       for (int dCol = 0; dCol < arrayB[0].length; dCol++) {
          for (int i = 0; i < arrayB[0].length; i++) {
             arrayProduct[cRow][dCol] += arrayA[cRow][i] * arrayB[i][dCol];

          }
       }
    }
}

每当我运行此代码时,它一直给我一个异常,说ArrayIndexOutOfBoundsException:2?

我的代码中的逻辑出了什么问题?

非常感谢任何帮助!

编辑:此代码的固定版本将是

public static int[][] multiplyArrays(int[][] arrayA, int[][] arrayB) {
    int[][] arrayProduct = new int[arrayA.length][arrayB[0].length];

    for (int cRow = 0; cRow < arrayA.length; cRow++) {
       for (int dCol = 0; dCol < arrayB[0].length; dCol++) {
          for (int i = 0; i < arrayA[0].length; i++) {**
             arrayProduct[cRow][dCol] += arrayA[cRow][i] * arrayB[i][dCol];

          }
       }
    }
}

1 个答案:

答案 0 :(得分:0)

在最里面的循环中使用

 for (int i = 0; i < arrayA[0].length; i++)

而不是

 for (int i = 0; i < arrayB[0].length; i++)