Java中的矩阵自身相乘
我在乘以矩阵时遇到了一个问题。我的代码看起来像这样,应该将矩阵本身相乘,但它不起作用,我不知道为什么Java中的矩阵自身相乘,java,matrix-multiplication,Java,Matrix Multiplication,我在乘以矩阵时遇到了一个问题。我的代码看起来像这样,应该将矩阵本身相乘,但它不起作用,我不知道为什么 class Matrix { // Constructor: create a matrix with only zeroes. public Matrix(int numRows, int numColumns) { this.values = new double[numRows][numColumns]; this.numRows = num
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;
}
类矩阵{
//构造函数:创建一个只有零的矩阵。
公共矩阵(整数行、整数列){
this.values=新的双精度[numRows][numColumns];
this.numRows=numRows;
this.numColumns=numColumns;
}
public int getNumRows(){
返回此.numRows;
}
public int getNumColumns(){
返回this.numColumns;
}
公共双getValue(int行,int列){
返回此.values[行][列];
}
public void setValue(int行、int列、双值){
此.values[行][列]=值;
}
公共矩阵乘法(矩阵b){
//实施
int[][]结果=新int[矩阵b.length][矩阵b[0].长度];
对于(int i=0;i<矩阵b.length;i++){
对于(int j=0;j<矩阵b[0]。长度;j++{
对于(int k=0;k<矩阵b[0]。长度;k++{
结果[i][j]+=矩阵b[i][k]*矩阵b[k][j];
}
}
}
返回结果
}
}
公开作废印刷品(){
for(int i=0;i
您的公共矩阵乘法(矩阵b)
方法应该返回矩阵
类型的对象,但您需要执行返回结果代码>,结果是一个数组:int[]result=newint[Matrix b.length][Matrix b[0].length]代码>
因此,您的代码无法编译
您必须从此int[][]
构造一个Matrix
对象 公共矩阵乘法(矩阵a、矩阵b){
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;
}
矩阵m=新矩阵(a.getNumRows(),b.getNumColumns());
for(int i=0;i
您得到了什么结果?您得到了什么错误?什么不起作用?你尝试过什么?请不要用垃圾邮件标记你的问题,并格式化你的代码,以便阅读。这并不难,任何编辑器都是自动完成的。要做到这一点,它必须是一个方阵。这也让您有机会提供更好的异常处理,了解这种情况。非常感谢!看起来它现在正在工作:)