Java 如何将矩阵作为对象访问

Java 如何将矩阵作为对象访问,java,matrix-multiplication,Java,Matrix Multiplication,我有一个物体叫Matice。Matice是一个矩阵nxn,在设定范围内填充随机数。我想在我的对象上执行一些操作,如加法、乘法、求逆等。我该怎么做?如果我尝试像m1[i][j]*m2[j][i]这样的东西。 但我收到了错误信息 public class Main { public static void main(String[] args) { Matice m1 = new Matice(3); m1.matrixFill(0, 5);

我有一个物体叫Matice。Matice是一个矩阵nxn,在设定范围内填充随机数。我想在我的对象上执行一些操作,如加法、乘法、求逆等。我该怎么做?如果我尝试像m1[i][j]*m2[j][i]这样的东西。 但我收到了错误信息

    public class Main {
    public static void main(String[] args) {
        Matice m1 = new Matice(3);
        m1.matrixFill(0, 5);
        m1.matrixPrint();
        //m1.matrixAdd(m2);
    }
}



public class Matice {

int[][] matice;
private int n;

public Matice(int n) {
    this.n = n;
    if(n > 0) {
        matice = new int[n][n];
    }
}

public void matrixPrint(){
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            System.out.format("%5d", matice[i][j]);                
        }
        System.out.println("");
    }
    System.out.println("");
}

public void matrixFill(int a, int b){
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            matice[i][j] = (int) (Math.random() * (a + b + 1) - a);                
        }
    }
}

public void matrixAdd(Matice m1, Matice m2){
    int[][] resultMatrix = new int[n][n];        
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            resultMatrix[i][j] = m1[i][j] + m2[i][j];
        }            
    }
}    
}
公共类主{
公共静态void main(字符串[]args){
材料m1=新材料(3);
m1.矩阵填充(0,5);
m1.matrixPrint();
//m1.矩阵DD(m2);
}
}
公务舱{
int[][]材料;
私人int n;
公共码头(国际北){
这个,n=n;
如果(n>0){
matice=新整数[n][n];
}
}
公共无效matrixPrint(){
对于(int i=0;i
您指的是对象本身,而不是作为对象字段的数组

试试这个:

结果矩阵[i][j]=m1.matice[i][j]+m2.matice[i][j]

而不是

结果矩阵[i][j]=m1[i][j]+m2[i][j]


顺便说一句,我建议将matrixAdd标记为static,因为它是一个无状态的辅助方法,或是提取到另一个类中。

您已经开始了正确的方法:将操作作为方法添加到Matice类中。与C++不同,不能为类定义运算符。你必须坚持用普通的方法

您的方法应该使用它们作为一个参数调用的Matice。因此,使用类似于
add(Matice-other)
的方法,接下来您必须决定是修改调用它们的方法,还是返回数据的副本


最后但并非最不重要的一点是,如果这不是一个玩具/练习项目,我会查看现有的图书馆:

是的,这只是我大学考试的一个练习项目。谢谢你的评论。我按照你的建议写了这个程序,效果很好!