2012-04-09 69 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 2012-04-09 15:35:49

回答

-2

Java沒有指針。對象被傳遞並通過引用返回。在C++方面,rows[i].getSquare(j)是一個右值,而不是左值,所以你不能分配給它。您應該創建並使用rows[i].setSquare(...)

+5

對象不是通過引用傳遞。引用是按值傳遞的。 – 2012-04-09 15:34:05

+0

「通過參考」的東西是片狀的。但另一方面,左值/右值是正確的。 – 2012-04-09 15:36:10

+0

正確的是,對於尷尬的措辭感到抱歉。 – 2012-04-09 15:36:55

10

你不能爲某個方法的返回值賦值。相反,你需要一個setSquare()方法添加到類:

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

,並使用它像這樣:

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

啊!好的 - 謝謝。 – jollyroger 2012-04-09 15:39:03

0

Java沒有指針 - 引用是不一樣的東西。

根據您發佈的代碼,無法確定究竟發生了什麼。我認爲你需要一種方法來設置Row類擁有的私有數組中的Square值。

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

在任何情況下,它看起來都是一個糟糕的抽象。