我试图编写一种方法,将两个矩阵相乘,然后返回一个带有结果乘积的二维数组。例如,第一矩阵是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];
}
}
}
}
答案 0 :(得分:0)
在最里面的循环中使用
for (int i = 0; i < arrayA[0].length; i++)
而不是
for (int i = 0; i < arrayB[0].length; i++)