在java中乘以2个不同大小的矩阵

在java中乘以2个不同大小的矩阵,java,Java,我试图用一个矩阵乘以另一个不同大小的矩阵。第一个矩阵是4x2,第二个矩阵是2x2。目前,我的程序为这个乘法生成的答案是不正确的。请帮忙 public class MatrixCipher { public static void main(String[] args) { int[][] matrix = new int[4][2]; int[][] matrix2 = new int[2][2]; matrix2[0][0] = 1;

我试图用一个矩阵乘以另一个不同大小的矩阵。第一个矩阵是4x2,第二个矩阵是2x2。目前,我的程序为这个乘法生成的答案是不正确的。请帮忙

public class MatrixCipher {

    public static void main(String[] args) {
        int[][] matrix = new int[4][2];
        int[][] matrix2 = new int[2][2];
        matrix2[0][0] = 1;
                matrix2[0][1] = 2;
                matrix2[1][0] = 3;
                matrix2[1][1] = 4;

        int[][] product = new int[4][2];

        for (int m = 0; m < 4; m++) {
            for (int n = 0; n < 2; n++) {
                matrix[m][n] = (int) (6 * Math.random() + 1);
            }
        }

        System.out.print("==1==");
        System.out.println("  ");
        for (int m = 0; m < 4; m++) {
            for (int n = 0; n < 2; n++) {

                System.out.print(matrix[m][n] + "  ");
            }
            System.out.println("  ");
        }
        System.out.print("=====");
        System.out.println("");
        System.out.println("  x");

        System.out.print("==2==");
        System.out.println("  ");
        for (int m = 0; m < 2; m++) {
            for (int n = 0; n < 2; n++) {

                System.out.print(matrix2[m][n] + "  ");
            }
            System.out.println("  ");
        }
        System.out.print("=====");
        System.out.println("");
        System.out.println("  =");

        for (int m = 0; m < 4; m++) {
            for (int n = 0; n < 2; n++) {
                for (int f = 0; f < 2; f++) {
                    product[m][n] = matrix[m][n] * matrix2[f][n];
            }
          }
        }

        System.out.print("=====");
        System.out.println("  ");
        for (int m = 0; m < 4; m++) {
            for (int n = 0; n < 2; n++) {

                System.out.print(product[m][n] + "  ");
            }
            System.out.println("  ");
       }
        System.out.print("=====");
        System.out.println("");
    }

}
公共类MatrixCipher{
公共静态void main(字符串[]args){
int[][]矩阵=新int[4][2];
int[]matrix2=新int[2][2];
矩阵2[0][0]=1;
matrix2[0][1]=2;
matrix2[1][0]=3;
matrix2[1][1]=4;
int[][]产品=新int[4][2];
对于(int m=0;m<4;m++){
对于(int n=0;n<2;n++){
矩阵[m][n]=(int)(6*Math.random()+1);
}
}
系统输出打印(“==1=”);
System.out.println(“”);
对于(int m=0;m<4;m++){
对于(int n=0;n<2;n++){
系统输出打印(矩阵[m][n]+“”);
}
System.out.println(“”);
}
系统输出打印(“==”);
System.out.println(“”);
系统输出打印项次(“x”);
系统输出打印(“==2=”);
System.out.println(“”);
对于(int m=0;m<2;m++){
对于(int n=0;n<2;n++){
系统输出打印(matrix2[m][n]+“”);
}
System.out.println(“”);
}
系统输出打印(“==”);
System.out.println(“”);
System.out.println(“=”);
对于(int m=0;m<4;m++){
对于(int n=0;n<2;n++){
对于(int f=0;f<2;f++){
积[m][n]=矩阵[m][n]*matrix2[f][n];
}
}
}
系统输出打印(“==”);
System.out.println(“”);
对于(int m=0;m<4;m++){
对于(int n=0;n<2;n++){
系统输出打印(产品[m][n]+“”);
}
System.out.println(“”);
}
系统输出打印(“==”);
System.out.println(“”);
}
}
在交互应用过程中,您错过了整个过程,并且使用了错误的顺序

    for (int m = 0; m < 4; m++) {
        for (int n = 0; n < 2; n++) {
            for (int f = 0; f < 2; f++) {
                product[m][n] = product[m][n] + matrix[m][f] * matrix2[f][n];
        }
      }
    } 
for(int m=0;m<4;m++){
对于(int n=0;n<2;n++){
对于(int f=0;f<2;f++){
积[m][n]=积[m][n]+矩阵[m][f]*matrix2[f][n];
}
}
} 

你真的知道矩阵乘法的公式吗?