我有一个名为 Tile 的类,我想在其中创建一个名为 grid 的双数组。奇怪的部分是当我这样做
private final int size = 5;
public Tile[][] grid = new Tile[size][size];
它没有显示任何错误,但是当我尝试访问网格时,它会引发空指针异常。 所以我尝试了这个
private final int size = 5;
public Tile[][] grid;
grid = new Tile[size][size];
现在它立即在 read 下划线并显示错误“Unknown class: 'grid'”。
这是两个类 网格:
public class Grid {
public Grid(String[][] grid){
initiateGrid(grid);
}
private final int size = 5;
public Tile[][] grid ; grid = new Tile[size][size];
public void initiateGrid(String[][] grid){
for(int i=0; i<5; i++){
for(int j=0; j<5; j++){
this.grid[i][j].setContent(grid[i][j]);
}
}
}
public void crossTile(Tile tile){
tile.valid = false;
}
}
平铺:
public class Tile {
public Tile(){
this.content = "";
this.active = false;
this.valid = true;
}
public String content;
public boolean active;
public boolean valid;
public void setContent(String content){
this.content = content;
}
}
有什么我在这里遗漏的提示吗?
答案 0 :(得分:3)
grid = new Tile[size][size];
是一个语句,而不是一个字段声明。
语句不能出现在类中;它们只能出现在构造函数、初始化块和方法中。
因此,您的替代尝试是直接无效的 java。
问题是:
new Tile[size][size]
创建一个新的 2Dish 数组,可以容纳 Tile 对象,但没有初始化任何“插槽”。您必须遍历 x 和 y 坐标并创建一个新的 Tile 对象。
显然,您需要大小 x 大小的 Tile 对象。这意味着 new Tile()
需要在代码中的某处调用,大小 x 大小倍。回到原来的状态,然后添加该循环以制作瓷砖。