这给我一个错误。我认为这在语法上是正确的。我没有使用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;
}
}
}
答案 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);
}
}