1

わかりましたので、独自の Matrix クラスを作成しています。そして、行列を転置する転置メソッドがあります。これはメインメソッドのブロックです

    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 は this.matrix2 と同じ ID を持っています。そのため、コードが実行されると

 Matrix tempMatrix = new Matrix(row,col);

次に、this.matrix2 の内容が空になります。ここで何が起こっているのか知っている人はいますか?それが役立つ場合、フィールドはすべてプライベート静的です...

4

0 に答える 0