1

好的,我正在制作我自己的 Matrix 类。我有一个转置矩阵的转置方法。这是 main 方法中的块

    Matrix m1 = new Matrix(4,2);
    m1.fillMatrix(1,2,3,4,5,6,7,8);
    System.out.println("before " + m1.toString());
    m1.transpose();
    System.out.println("after " + m1.toString());

这就是它搞砸的地方,在 m1.transpose(); 在 transpose() 方法中

public Matrix transpose() {
    if(isMatrix2) {
        Matrix tempMatrix = new Matrix(row, col); // matrix2 contents are emptied once this line is executed
        for(int i=0; i < row; i++) {
            for(int j=0; j < col; j++)
                tempMatrix.matrix2[i][j] = matrix2[i][j];
        }

所以出于某种原因,tempMatrix.matrix2 的 id 与 this.matrix2 相同。所以当代码执行时

 Matrix tempMatrix = new Matrix(row,col);

然后 this.matrix2 的内容被清空。有谁知道这里可能发生了什么?这些字段都是私有静态的,如果有帮助的话......

4

0 回答 0