如何在java中定义枚举二维数组?

时间:2012-08-25 22:35:31

标签: java

这给我一个错误。我认为这在语法上是正确的。我没有使用java的经验。只有C ++。有人能告诉我我做错了吗?

private enum Site{
    OPEN, BLOCKED }
Site[][] grid;

final Site DEFAULT_STATE = Site.OPEN;
/**
 * Constructor.
 */
public GridClass(int N)
{
    for(int i = 0; i < N; i++)
    {
        for(int j = 0; j < N; i++)
        {
            grid[i][j] = DEFAULT_STATE;
        }
    }
}

3 个答案:

答案 0 :(得分:3)

您只是声明grid,而您没有定义它。

你需要这样的东西:

Site[][] grid = new Site[N][N];

答案 1 :(得分:2)

问题是你在没有分配内存的情况下访问grid

将其添加为构造函数中的第一行:

grid = new Site[N][N];

您收到的错误称为NullPointerException,因为grid[i][j]行正在尝试取消引用grid的空指针。


此外,你的第二个for循环说i++;它应该是j++

答案 2 :(得分:0)

您需要在构造函数中创建数组,因为这是您知道维度的位置。这不能在静态初始值设定器中完成,因为此时N不在范围内。

public GridClass(int N) {
   grid = new Site[N][N];
   for (int i=0;i<N;i++) {
      Arrays.fill(grid[i], DEFAULT_STATE);
   }
}