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