【问题标题】:Multiply 2 matrices 4x1 and 1x4将 2 个矩阵 4x1 和 1x4 相乘
【发布时间】:2018-11-04 23:35:37
【问题描述】:

程序应该将 2 个矩阵 4x1 和 1x4 相乘并将结果输出到控制台(矩阵 4X4)。但没有任何显示。有什么问题?

public class Matrix {
    public static void main(String[] args) {
        int[][] matrixA = new int[4][1];
        int[][] matrixB = new int[1][4];
        int[][] matrixC = new int[4][4];

        matrixA[0][0] = 1;
        matrixA[1][0] = 2;
        matrixA[2][0] = 3;
        matrixA[3][0] = 4;

        matrixB[0][0] = 4;
        matrixB[0][1] = 3;
        matrixB[0][2] = 2;
        matrixB[0][3] = 1;

        for (int i = 0; i < 4; i++) { // A rows
            for (int j = 0; j < 4; j++) { // B columns
                for (int k = 0; k < 1; k++) { // A columns
                    matrixC[i][j] += matrixA[i][k] * matrixB[k][j];
                    System.out.print(matrixC[i][j] + "   ");
                }
            }
        }
        int j = 0;
        for (int i = 0; i < 4; i++) {
            for (int k = 0; k < 1; k++)
                System.out.print(matrixC[i][j] + "   ");
            System.out.println();
        }
    } //end main
} //end class

【问题讨论】:

    标签: java matrix matrix-multiplication


    【解决方案1】:

    您在第二组 for 循环之前引入了变量 j。此外,即使它们是可选的,我强烈建议始终包括大括号。和k &lt; 4。喜欢,

    for (int i = 0; i < 4; i++) {
        for (int k = 0; k < 4; k++) {
            System.out.print(matrixC[i][k] + "   "); // not [i][j]
        }
        System.out.println();
    }
    

    只需使用Arrays.deepToString(Object[]) 喜欢

    System.out.println(Arrays.deepToString(matrixC));
    

    【讨论】:

      【解决方案2】:

      希望这会有所帮助:

      public class Matrix {
          public static void main(String[] args) {
              int[][] matrixA = {{1}, {2}, {3}, {4}};
              int[][] matrixB = {{4, 3, 2, 1}};
      
              int[][] matrixC = new int[4][4];
      
              for (int i = 0; i < 4; i++) { // A rows
                  for (int j = 0; j < 4; j++) { // B columns
                      for (int k = 0; k < 1; k++) { // A columns
                          matrixC[i][j] += matrixA[i][k] * matrixB[k][j];
                          System.out.print(matrixC[i][j] + "   ");
                      }
                  }
                  System.out.println();
              }
          }
      }
      

      输出:

      4   3   2   1   
      8   6   4   2   
      12   9   6   3   
      16   12   8   4   
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-18
        相关资源
        最近更新 更多