-1

マークされた行に次のようになります:'予期しない型
が必要です:変数
が見つかりました:値'(*)

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]);
    }
}

これは私のRowクラスです:

private Square[] row;

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

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

ここで私が間違っていることを指摘して、私を助けてください。
前もって感謝します。

4

3 に答える 3

10

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

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

次のように使用します。

rows[i].setSquare(j, matrix[i][j]);
于 2012-04-09T15:34:32.920 に答える
0

Java にはポインターがありません。参照は同じものではありません。

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

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

いずれにせよ、それは貧弱な抽象化のように見えます。

于 2012-04-09T15:37:06.703 に答える
-2

Java にはポインターがありません。オブジェクトは参照によって渡され、返されます。C++ に関して言えば、rows[i].getSquare(j)lvalueではなくrvalueであるため、代入できません。

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

于 2012-04-09T15:33:44.263 に答える