我定义的对象中包含的值将覆盖已定义对象的值

时间:2013-12-29 15:25:31

标签: java class oop object math

在我的第一个声明中,它打印出hx,

的值
matrix hx = X.times(theta);
System.out.println("Value of hx: ");
for (int i =0; i< hx.getRowdimension(); i++) {
    for (int j = 0; j< hx.getColdimension(); j++) {
        System.out.println(hx.getArray()[i][j]);
    }
}

但是在我的第二个语句中,log_hx会覆盖hx的值。为什么这样以及如何摆脱它?

matrix log_hx  = MathUtility.matrixLog(hx);
System.out.println("Value of hx: ");
for (int i =0; i< hx.getRowdimension(); i++) {
    for (int j = 0; j< hx.getColdimension(); j++) {
        System.out.println(hx.getArray()[i][j]);
    }
}

这是我的MathUtility类:

public final class MathUtility {

    public static matrix matrixLog(matrix B) {
        int m = B.getRowdimension();
        int n = B.getColdimension();
        double[][] C = B.getArray();
        for (int i = 0; i< m; i++) {
            for (int j = 0; j< n; j++) {
                C[i][j] = Math.log(C[i][j]);
            }
        }
        return new matrix(C);
    }
}

2 个答案:

答案 0 :(得分:0)

B.getArray();替换为new double[m][n],这样您就不会重复使用旧数组了。

答案 1 :(得分:0)

如果重写getArray()类的matrix方法以返回基础数组的副本而不是数组本身,那么它也应该有效。

另外:请坚持编码惯例。您的课程应该被称为Matrix