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 は常に 0 に等しいように見えます。両方のループで j をインクリメントしています。

于 2012-09-28T20:25:04.060 に答える
5

for ループをもう 1 回繰り返す必要があります。

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

する必要があります

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

また、同じ方法jで andループを更新します(また、ループがインクリメントされ、コピー/貼り付けエラーのように見えます)。kkj

于 2012-09-28T20:25:26.120 に答える
1

このコードは、ArrayIndexOutOfBoundsException. のループでインクリメントjしています。使用する方が良い:k`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 に答える