java - 尝试创建新对象时出现未知类错误
问题描述
我有一个名为 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];
现在它立即在读取时用错误“未知类:'网格'”强调它。
这是两个类网格:
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;
}
}
我在这里缺少什么提示?
解决方案
grid = new Tile[size][size];
是一个声明,而不是一个字段声明。
语句不能出现在类中;它们只能出现在构造函数、初始化块和方法中。
因此,您的替代尝试是直接无效的 java。
问题是:
new Tile[size][size]
创建一个可以容纳 Tile 对象的新 2Dish 数组,但没有初始化任何“插槽”。您必须遍历 x 和 y 坐标并创建一个新的 Tile 对象。
显然,您想要大小 x 大小的 Tile 对象。这意味着new Tile()
需要在您的代码中的某处调用,并且大小为 x 大小倍。回到你原来的样子,然后添加那个循环来制作瓷砖。
推荐阅读
- c - 我的代码有问题,因为我无法在没有 cstring 的情况下修复代码
- java - 解决 Android Studio 项目错误:从不使用变量“pwd”
- reactjs - 如何使用ant design上传组件下载exel文件
- c# - 使用 Net Core MVC 中的接口从 Projects Controller 层使用 API 层服务方法
- api - eyeson api 页面“api.eyeson.team”。未找到此页面。有没有其他方法可以访问它?
- ios - 如果以模态方式呈现,则获取最顶层的 UIViewController
- json - 在 Zapier 中,“GET”函数后跟一个带有自定义 JSON 请求的“POST”
- powerbi - PowerBI 使用具有空值的主键
- python - 如何将数据拟合到 octave/python 中的给定理论模型?
- sql - 查询获取一个月的最后一个日期