如何访问Matrix作为对象

时间:2014-05-18 16:54:50

标签: java matrix-multiplication

我有一个对象马尔蒂斯。 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];
        }            
    }
}    
}

2 个答案:

答案 0 :(得分:0)

您指的是对象本身而不是作为对象字段的数组。

试试这个:

  

resultMatrix [i] [j] = m1.matice [i] [j] + m2.matice [i] [j];

而不是

  

resultMatrix [i] [j] = m1 [i] [j] + m2 [i] [j];

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

答案 1 :(得分:0)

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

你的方法应该使用它们被调用的Matice作为一个参数。因此,请使用add(Matice other)之类的内容接下来,您必须确定方法是否修改了调用它们的Matice,或者它们是否返回了数据的副本。

最后但并非最不重要的是,如果这不是玩具/运动项目,我会检查现有的图书馆:Java matrix libraries