我已经创建了一个2d数组(用作游戏板),而在另一个类中我想要获取我的数组并能够对其执行操作。
我的数组定义(在课程PlayingBoard
中):
public char[][] myGrid = new char[12][12];
现在我想从我项目中的其他类操作这个数组。我尝试在课堂上调用此网格
中int i, j;
for(i = 0; i < 12; i++) {
for(j = 0; j < 12; j++) {
PlayingBoard.myGrid[i][j] = 'x';
}
}
我收到错误:
无法从静态上下文
引用非静态变量myGrid
如何从第二节课中引用,编辑和操作myGrid
?
答案 0 :(得分:6)
您必须更改以下两项内容之一:
将myGrid
声明为静态
public static char[][] myGrid = new char[8][8];
通过对象实例访问myGrid
:
PlayingBoard pb = new PlayingBoard();
int i, j;
for(i = 0; i < 12; i++) {
for(j = 0; j < 12; j++) {
pb.myGrid[i][j] = 'x';
}
}
答案 1 :(得分:1)
答案指向使用静态数组,从OO的角度来看,这让我感到难过。
如何使用“addPiece”方法确保您的游戏板具有适当的封装结构?
PlayingBoard myBoard = new PlayingBoard();
int i, j;
for(i = 0; i < 12; i++) {
for(j = 0; j < 12; j++) {
myBoard.addPiece(i,j, 'x');
}
}
即使这样,如果你的作品本身是“聪明的”,你也会想要创建一个包裹它们的对象,而不仅仅是存储一个字符。
public PlayingPiece[][] _board = new PlayingPiece[8][8];
另外,你在循环中使用12但在初始化时使用8,所以期望一个IndexOutOfBounds异常。