Java:访问指针

时间:2012-04-09 15:32:07

标签: java pointers

我得到:'意外的类型
    要求:变量
    找到:标记行上的值'(*)

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

请指出我在这里做错了什么来帮助我 提前谢谢。

3 个答案:

答案 0 :(得分:10)

您无法将某些内容分配给方法的返回值。相反,您需要向setSquare()类添加Row方法:

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

并像这样使用它:

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

答案 1 :(得分:0)

Java没有指针 - 引用不是一回事。

根据您发布的代码,无法确定实际情况。我认为您需要一种方法来设置Row类拥有的私有数组中Square的值。

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

无论如何,它看起来像一个糟糕的抽象。

答案 2 :(得分:-2)

Java没有指针。对象通过引用传递和返回。就C ++而言,rows[i].getSquare(j)右值,而不是左值,因此您无法分配给它。

相反,您应该创建并使用rows[i].setSquare(...)