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

mm5n2pyu  于 2021-07-09  发布在  Java
关注(0)|答案(3)|浏览(465)

这给了我一个错误。我认为这在语法上是正确的。我没有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;
        }
    }
}
6l7fqoea

6l7fqoea1#

问题是你正在访问 grid 没有给它分配内存。
将此添加为构造函数的第一行:

grid = new Site[N][N];

您收到的错误称为 NullPointerException 因为 grid[i][j] 行正在尝试取消对空指针的引用 grid .
另外,你的第二个for循环说 i++ ; 应该是的 j++ .

zu0ti5jz

zu0ti5jz2#

您需要在构造函数中创建数组,因为这是您知道维度的地方。这不能在静态初始值设定项中完成,因为此时n不在作用域中。

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

piwo6bdm3#

你只是宣布 grid ,你没有定义它。
你需要这样的东西:

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

相关问题