如何在Java中编辑来自另一个类的数组

时间:2013-12-02 17:34:45

标签: java arrays static

我已经创建了一个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

2 个答案:

答案 0 :(得分:6)

您必须更改以下两项内容之一:

  1. myGrid声明为静态

    public static char[][] myGrid = new char[8][8];
    
  2. 通过对象实例访问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异常。