2012-04-09 3 views
-1

は私が取得:マークされた行(*)のJava:アクセスポインタ

for (int i = 0; i < boardSize; i++) { 
    for (int j = 0; j < boardSize; j++) { 
     rows[i].getSquare(j) = matrix[i][j]; // * points to the (in (j) 
     columns[j].getSquare(i) = matrix[i][j]; // * points to the (in 
     int[] b = getBox(i, j); 
     int[] boxCord = getBoxCoordinates(i + 1, j + 1); 
     boxes[b[0]][b[1]].getSquare(boxCord[0], boxCord[1]); 
    } 
} 

の '予想外の必要なタイプ
:変数
た値を' これが私の行クラスです:

private Square[] row; 

Row(int rowCount) { 
    this.row = new Square[rowCount]; 
} 

public Square getSquare(int index) { 
    return this.row[index]; 
} 

ここで間違っていることを指摘して私を助けてください。
ありがとうございます。

+3

あなたの前の質問にいくつかの良い答えがあります。実際にはそれらのいくつかを受け入れるべきです – Perception

答えて

-2

Javaにはポインタがありません。オブジェクトは渡され、参照によって返されます。 C++では、rows[i].getSquare(j)の値がで、の値はではありません。したがって、これに割り当てることはできません。

代わりにrows[i].setSquare(...)を作成して使用する必要があります。

+5

オブジェクトは参照渡しされません。参照は値渡しとなります。 –

+0

"参照渡し"のことは薄れている。しかし一方で、左辺値/右辺値は正しいです。 –

+0

あなたは、厄介な言い訳には申し訳ありません。 –

10

メソッドの戻り値に何かを割り当てることはできません。代わりに、あなたはクラスにsetSquare()メソッドを追加する必要があります。

public Square setSquare(int index, Square value) { 
    this.row[index] = value; 
} 

とこのようにそれを使用します。

rows[i].setSquare(j, matrix[i][j]); 
+0

ああ! OK - それに感謝します。 – jollyroger

0

Javaにはポインタを持っていない - の参照は同じものではありません。

投稿したコードに基づいて実際に何が起こっているのかを知ることは不可能です。私はあなたの行クラスが所有するプライベート配列でそのSquareの値を設定するメソッドが必要だと思います。

public void setSquare(int index, Square newSquare) { 
    this.row[index] = newSquare; 
} 

いずれにしても抽象度が低いと思われます。

関連する問題