【问题标题】:Multiply matrix array - how to avoid redundancy乘法矩阵数组 - 如何避免冗余
【发布时间】:2018-12-17 16:23:01
【问题描述】:

我目前正在使用 Java 开发我自己的矩阵计算器。到目前为止,我看起来一切都很好,但我遇到了一个问题。

private void multiplyMatrix() {
    if (getNumberOfColumns() == 2) {
        for (int getRows = 0; getRows < getNumberOfRows(); getRows++) {
            for (int getColumns = 0; getColumns < getNumberOfColumns(); getColumns++) {
                System.out.print(
                        matrixArray[getRows][0] * matrixSecondArray[0][getColumns] +
                        matrixArray[getRows][1] * matrixSecondArray[1][getColumns] + " ");
            }
            System.out.println();
        }
    }
    if (getNumberOfColumns() == 3) {
        for (int getRows = 0; getRows < getNumberOfRows(); getRows++) {
            for (int getColumns = 0; getColumns < getNumberOfColumns(); getColumns++) {
                System.out.print(
                        matrixArray[getRows][0] * matrixSecondArray[0][getColumns] +
                        matrixArray[getRows][1] * matrixSecondArray[1][getColumns] +
                        matrixArray[getRows][2] * matrixSecondArray[2][getColumns] + " ");
            }
            System.out.println();
        }
    }
}

我想要完成的是“动态”添加下一行代码:

matrixArray[getRows][nextNumber] * matrixSecondArray[nextNumber][getColumns] +

根据矩阵的大小来避免冗余(多个 if 语句 && 多行相同的代码)(例如,如果矩阵为 4x4,它将添加 3 作为 nextNumber 等等。

【问题讨论】:

    标签: java arrays matrix matrix-multiplication


    【解决方案1】:

    你应该用这样的东西改变你的 System.out.print() 语句:

    int sum = 0;
    for(colIndex = 0; colIndex < getNumberOfColumns(); colIndex++)
      sum += matrixArray[getRows][colIndex] * matrixSecondArray[colIndex][getColumns];
    System.out.print(sum  + " ");
    

    它遍历矩阵行中的单元格,并计算适当产品的总和,如您的代码中所示。

    【讨论】:

      【解决方案2】:
      private void multiplyMatrix() {
      for (int getRows = 0; getRows < getNumberOfRows(); getRows++) {
          for (int getColumns = 0; getColumns < getNumberOfColumns(); getColumns++) {
              double sum = 0;
              for(int i =0; i < getNumberOfColumns() ; i++) {
                  sum+= matrixArray[getRows][i] * matrixSecondArray[i][getColumns]
              }
              System.out.print(sum + " ")
          }
          System.out.println();
      }
      }
      

      【讨论】:

        猜你喜欢
        • 2017-08-16
        • 1970-01-01
        • 1970-01-01
        • 2015-08-12
        • 2019-01-02
        • 2017-02-15
        • 2011-06-16
        • 2017-08-10
        • 1970-01-01
        相关资源
        最近更新 更多