Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的矩阵自身相乘_Java_Matrix Multiplication - Fatal编程技术网

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
您得到了什么结果?您得到了什么错误?什么不起作用?你尝试过什么?请不要用垃圾邮件标记你的问题,并格式化你的代码,以便阅读。这并不难,任何编辑器都是自动完成的。要做到这一点,它必须是一个方阵。这也让您有机会提供更好的异常处理,了解这种情况。非常感谢!看起来它现在正在工作:)