2012-09-28 54 views
0
public static double[][] multiplyMatrix(double[][] matrix1, double[][] matrix2) { 
     // As both arrays are square and the same size, the row size represents the row size and column size for both matrices 
     int dimension = matrix1.length; 

     double[][] matrix3 = new double[dimension][dimension]; 

     for (int i = 0; i < dimension-1; i++) { 
      for (int j = 0; j < dimension-1; j++) { 
       for (int k = 0; k < dimension-1; j++) { 
        matrix3[i][j] += matrix1[i][k] * matrix2[k][j]; 
       } 
      } 
     } 

     return matrix3; 
    } 

這很令人沮喪。爲什麼我的矩陣乘法器不工作?

+0

而且?怎麼了? – Dan

回答

5

看起來像k一直等於零。你在兩個循環中遞增j。

+0

上帝,我希望這不是他不工作的原因 –

5

您的for循環需要再進行一次迭代。

for (int i = 0; i < dimension-1; i++) 

應該

for (int i = 0; i < dimension; i++) 

而且更新jk循環以同樣的方式(和你的k循環增值j,它只是看起來像一個複製/粘貼錯誤)。

1

此代碼產生ArrayIndexOutOfBoundsException。您在k`for循環中遞增j。更好用:

for (int i = 0; i < dimension; i++) { 
    for (int j = 0; j < dimension; j++) { 
     for (int k = 0; k < dimension; k++) { 
      matrix3[i][j] += matrix1[i][k] * matrix2[k][j]; 
     } 
    } 
}