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;
    }

这非常令人沮丧。

4

3 回答 3

5

看起来 k 一直等于零。您在两个循环中都增加了 j 。

于 2012-09-28T20:25:04.060 回答
5

您的 for 循环需要再进行一次迭代。

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

应该

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

也以同样的方式更新你的jk循环(和你的k循环增量j,这看起来就像一个复制/粘贴错误)。

于 2012-09-28T20:25:26.120 回答
1

此代码生成一个ArrayIndexOutOfBoundsException. 您jk'`for循环中递增。更好地使用:

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];
        }
    }
}
于 2012-09-28T20:28:00.407 回答