2017-04-09 47 views
0

我想寫一個方法,將兩個矩陣相乘並返回一個二維數組與產生的結果。例如,第一個矩陣是5 x 2,第二個矩陣是2 x 5.結果矩陣應該分別是5 x 5矩陣。乘以二維數組ArrayIndexOutOfBoundsException? (Java)

這是我到目前爲止有:

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

在最內環路使用

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

代替

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

我意有所指在我的代碼方式中忽略了太多。非常感謝你的幫助! – bestgio