如何在java中定义枚举二维数组?
这给了我一个错误。我认为这在语法上是正确的。我没有java方面的经验。只有C++。有人能告诉我我做错了什么吗如何在java中定义枚举二维数组?,java,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(
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;
}
}
}
私有枚举站点{
打开,阻止}
站点[][]网格;
最终站点默认状态=Site.OPEN;
/**
*构造器。
*/
公共网格类(int N)
{
对于(int i=0;i
您只是在声明网格,而不是定义网格
您将需要以下内容:
Site[][] grid = new Site[N][N];
您只是声明
网格
,而不是定义它
您将需要以下内容:
Site[][] grid = new Site[N][N];
问题是您正在访问
网格
,但尚未为其分配内存
将其添加为构造函数中的第一行:
grid = new Site[N][N];
您收到的错误称为NullPointerException
,因为grid[i][j]
行正在尝试取消对grid
中的空指针的引用
此外,第二个for循环表示
i++
;应该是j++
问题是您正在访问网格
,但尚未为其分配内存
将其添加为构造函数中的第一行:
grid = new Site[N][N];
您收到的错误称为NullPointerException
,因为grid[i][j]
行正在尝试取消对grid
中的空指针的引用
此外,第二个for循环表示
i++
;它应该是j++
您需要在构造函数中创建数组,因为这是您知道维度的地方。这不能在静态初始值设定项中完成,因为此时N不在范围内
public GridClass(int N) {
grid = new Site[N][N];
for (int i=0;i<N;i++) {
Arrays.fill(grid[i], DEFAULT_STATE);
}
}
公共网格类(int N){
网格=新站点[N][N];
对于(int i=0;i您需要在构造函数中创建数组,因为这是您知道维度的地方。这不能在静态初始值设定项中完成,因为此时N不在范围内
public GridClass(int N) {
grid = new Site[N][N];
for (int i=0;i<N;i++) {
Arrays.fill(grid[i], DEFAULT_STATE);
}
}
公共网格类(int N){
网格=新站点[N][N];
对于(int i=0;在第二个循环中,它应该是“i++”而不是“j++”吗?我假设您在某个地方有一个main方法(publicstaticvoidmain(String[]args)
)它是j++(我认为编辑错误很抱歉),我有main方法。我把代码贴在了我遇到问题的地方。从现在开始,我会尽量弄清楚。旁注:避免第二次查看,并使用Arrays.fill()方法作为第二个数组维度:Arrays.fill(grid[I],默认_状态)在第二个循环中,它应该是“I++”而不是“j++”?我假设你在某处有一个main方法?(publicstaticvoidmain(String[]args)
)它是j++(很抱歉,我想是编辑错误),我有main方法。我把代码贴在了我遇到问题的地方。从现在开始,我会尽量弄清楚。旁注:避免第二次查看,对第二个数组维度使用Arrays.fill()方法:Arrays.fill(grid[i],默认状态)方法之外的代码?它是有效的,不是吗?方法之外的代码在哪里?假设这些都在一个类中,那么这些都是有效的(for
循环在构造函数中)@ZoveGames此代码在方法之外是有效的。它将声明一个字段grid
,并对其进行初始化。但是,目的是将其放入构造函数中。@ZoveGames:方法之外的代码无效。但是,您可以将其括在大括号{}
中以创建匿名方法(甚至使用静态{}
创建一个静态匿名方法)。如果这是你的意思,那么所有这些代码都包装在一个类中。方法之外的代码?它是有效的,不是吗?方法之外的代码在哪里?假设这些都在一个类中,这都是有效的(for
循环在构造函数中)@ZoveGames此代码在方法之外是有效的。它将声明一个字段grid
,并对其进行初始化。但是,目的是将其放入构造函数中。@ZoveGames:方法之外的代码无效。但是,您可以将其括在大括号{}
中以创建匿名方法(甚至使用静态{}
创建一个静态匿名方法)。如果这是您的意思,那么所有这些代码都包装在一个类中。