我有一个问题乘以矩阵。我的代码看起来像这样,应该自己乘以矩阵,但它不起作用,我不知道为什么。
class Matrix {
// Constructor: create a matrix with only zeroes.
public Matrix(int numRows, int numColumns) {
this.values = new double[numRows][numColumns];
this.numRows = numRows;
this.numColumns = numColumns;
}
public int getNumRows() {
return this.numRows;
}
public int getNumColumns() {
return this.numColumns;
}
public double getValue(int row, int column) {
return this.values[row][column];
}
public void setValue(int row, int column, double value) {
this.values[row][column] = value;
}
public Matrix multiply(Matrix b) {
// to be implemented
int [][] result = new int[Matrix b.length][Matrix b[0].length];
for (int i = 0; i < Matrix b.length; i++) {
for (int j = 0; j < Matrix b[0].length; j++) {
for (int k = 0; k < Matrix b[0].length; k++) {
result[i][j] += Matrix b[i][k] * Matrix b[k][j];
}
}
}
return result
}
}
public void print() {
for (int i = 0; i < this.numRows; i++) {
for (int j = 0; j < this.numColumns; j++) {
System.out.print(this.values[i][j] + " ");
}
System.out.println();
}
}
private double[][] values;
private int numRows;
private int numColumns;
}
答案 0 :(得分:0)
您的public Matrix multiply(Matrix b)
方法应返回Matrix
类型的对象,但您执行return result;
,结果为数组:int [][] result = new int[Matrix b.length][Matrix b[0].length];
所以你的代码无法编译。
您必须从此Matrix
构建一个int[][]
对象。
答案 1 :(得分:0)
public Matrix multiply(Matrix a, Matrix b) {
Matrix m = new Matrix(a.getNumRows(), b.getNumColumns());
for (int i = 0; i < m.getNumRows(); i++)
for (int j = 0; j < b.getNumColumns(); j++)
for (int k = 0; k < a.getNumRows(); k++)
m.setValue(i, j, a.getValue(i, k) * b.getValue(k, j));
return m;
}