2012-04-09 48 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; 
} 

在任何情况下,它看起来都是一个糟糕的抽象。