gpt4 book ai didi

java - 初始化二维对象数组

转载 作者:行者123 更新时间:2023-12-01 18:55:46 25 4
gpt4 key购买 nike

我收到空指针异常,我以为我已经初始化了数组中的所有对象,但似乎我在某些地方出错了。

这是该类的代码。在数组之外使用 MapBlock 对象时效果很好。

执行是当它尝试访问更新方法中的对象时。

public class Game { 
private Scanner scan;

// map stuff
MapBlock[][] mapObjects;


// List of Textures
Texture path;
Texture tower;
Texture grass;

Game(){
// Textures
path = loadTexture("path");
tower = loadTexture("tower");
grass = loadTexture("grass");



mapObjects = new MapBlock[24][16];

loadLevelFile("level1");

}

public void update(){
if(mapObjects[0][0] == null)
System.out.println("its null!!!");
mapObjects[0][0].update();
}

public void render(){
mapObjects[0][0].render();
}




private Texture loadTexture(String imageName){
try {
return TextureLoader.getTexture("PNG", new FileInputStream(new File("res/" + imageName + ".png")));
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException r){
r.printStackTrace();
}
return null;
}

private void loadLevelFile(String mapName){
try {
scan = new Scanner(new File("res/" + mapName + ".txt"));
} catch (FileNotFoundException e) {
System.out.println("Could not open "+ mapName +" file!");
e.printStackTrace();
}

String obj;
int i = 0, t = 0;

while(scan.hasNext()){
obj = scan.next();

if(obj == "o"){
mapObjects[i][t] = new MapBlock("GRASS", t*32, i*32, grass);

}else if(obj == "x"){
mapObjects[i][t] = new MapBlock("PATH", t*32, i*32, path);

}else if(obj == "i"){
mapObjects[i][t] = new MapBlock("TOWER", t*32, i*32, tower);
}

if(i < 24){
i++;
}else{
i = 0;
t ++;
}

}
}
}

感谢您的反馈

最佳答案

在您的 loadLevelFile 中方法:

-> if(obj == "o"){
// ...
-> }else if(obj == "x"){
// ...
-> }else if(obj == "i"){
// ...
}

您正在将字符串与 == 进行比较而不是.equals() ,这可能会导致您的 mapObjects 的实例化数组不会发生。

尝试将其更改为:

if(obj.equals("o")){
// ...
}else if(obj.equals("x")){
// ...
}else if(obj.equals("i")){
// ...
}

错误发生在这里:

if(mapObjects[0][0] == null)
System.out.println("its null!!!");
mapObjects[0][0].update(); <- Error happens here

因为对象位于 mapObjects[0][0]仍然是null ,如loadLevelFile方法没有实例化它。

关于java - 初始化二维对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14074261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com