java - 2个二维数组相乘的方法

标签 java arrays algorithm loops matrix-multiplication

我正在尝试创建一个方法,该方法将 2 个二维数组作为参数并打印它们的乘法数组(类似于方法中的矩阵乘法)。似乎它在运行时陷入了无限循环的某个地方。有什么修改吗?

public static void multiplicationOfArray(int[][] matrix1, int[][] matrix2) {
    int row1 = matrix1.length;
    int column1 = matrix1[0].length;
    int row2 = matrix2.length;
    int column2 = matrix2[0].length;
    int[][] resultmatrix = new int[row1][column2];

    if (column1 == row2) {
        for (int i = 0; i < row1; row1++) {
            for(int j = 0; j < column2; j++) {
                for (int k = 0; k < column1; k++) {
                    resultmatrix[i][j] += matrix1[i][k] * matrix2[k][j];
                }
            }
        }

        for (int row = 0; row < row1; row++) {
            for (int column = 0; column < column2; column++) {
                System.out.println(resultmatrix[row][column] + " ");
            }
            System.out.println();
        }
    }
}

最佳答案

如果尺寸不正确/无效,那么您可能会抛出异常。 你也可以试试这个方法 -

public static double[][] multiply(double[][] A, double[][] B) {
        int mA = A.length;
        int nA = A[0].length;
        int mB = B.length;
        int nB = B[0].length;
        if (nA != mB) throw new RuntimeException("Illegal matrix dimensions.");
        double[][] C = new double[mA][nB];
        for (int i = 0; i < mA; i++)
            for (int j = 0; j < nB; j++)
                for (int k = 0; k < nA; k++)
                    C[i][j] += A[i][k] * B[k][j];
        return C;
    }  

可以找到完整的代码here .

关于java - 2个二维数组相乘的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32487025/

相关文章:

algorithm - 向图中添加新边并在 O(n) 中找到新的生成树

algorithm - 如何自动创建词汇问题

java - 如何在 Windows 中模拟/测试 Java 程序的大型机文件 I/O (JZOS)?

java - 您可以在 Android 上使用 Bloomberg API 吗?

python - 如何读写大于主内存的numpy数组?

java - 理解 list[i-1] 与 list[i]-1

java - 在Eclipse 导出的jar 的根目录中查找文件以进行JUNIT 测试

java - 带有 2 个选项卡的 JTabbedPane 未显示

Javascript for...in 语句在循环数组时出错

algorithm - 一组组合和约束求解问题。我可以使用什么算法?