Search code examples
javaarraysmatrixmatrix-multiplication

Multiply matrix array - how to avoid redundancy


I'm currently working on my own matrix calculator in Java. Everything looks good for me as of now, yet I encountered one problem.

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();
        }
    }
}

What I want to accomplish is to "dynamically" add next line of code:

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

to avoid redundancy (multiple if statements && multiple lines of the same code) based on how large will matrix be (for example if matrix will be 4x4 it will add 3 as nextNumber and so on.


Solution

  • You should alter your System.out.print() statement with something like this :

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

    It iterates over cells in matrix row, and calculates sum of appropriate products, as in your code.