乘法矩阵数组 - 如何避免冗余
Multiply matrix array - how to avoid redundancy
我目前正在 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 等等。
你应该用这样的东西改变你的 System.out.print() 语句:
int sum = 0;
for(colIndex = 0; colIndex < getNumberOfColumns(); colIndex++)
sum += matrixArray[getRows][colIndex] * matrixSecondArray[colIndex][getColumns];
System.out.print(sum + " ");
它遍历矩阵行中的单元格,并计算适当乘积的总和,如您的代码所示。
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();
}
}
我目前正在 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 等等。
你应该用这样的东西改变你的 System.out.print() 语句:
int sum = 0;
for(colIndex = 0; colIndex < getNumberOfColumns(); colIndex++)
sum += matrixArray[getRows][colIndex] * matrixSecondArray[colIndex][getColumns];
System.out.print(sum + " ");
它遍历矩阵行中的单元格,并计算适当乘积的总和,如您的代码所示。
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();
}
}