乘法矩阵数组-如何避免冗余

时间:2018-07-09 22:19:32

标签: java matrix-multiplication

我目前正在使用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] +

为了避免基于矩阵的大小(例如,如果矩阵将为4x4,则它将为nextNumber加3,依此类推),从而避免了冗余(如果同一代码中有多个if语句和同一行的多行)。

2 个答案:

答案 0 :(得分:1)

otherthing

答案 1 :(得分:0)

您应该使用以下内容更改System.out.print()语句:

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

如矩阵代码所示,对矩阵行中的单元进行迭代,并计算适当乘积的总和。