提问人:Gandalf1783 提问时间:4/19/2019 最后编辑:Gandalf1783 更新时间:4/19/2019 访问量:40
World Loader 不会将world1.txt加载为 String [duplicate]
World Loader wont load world1.txt as an String [duplicate]
问:
我的 Java 游戏有问题。当我想导出它时,它不会加载世界。我会得到一个“线程 - 0”异常。这是我的功能:
private void loadWorld(String path){
String file = World.class.getResourceAsStream(path).toString();
file.toString();
String[] tokens = file.split("\\s+");
width = Utils.parseInt(tokens[0]);
height = Utils.parseInt(tokens[1]);
spawnX = Utils.parseInt(tokens[2]);
spawnY = Utils.parseInt(tokens[3]);
tiles = new int[width][height];
for(int y = 0;y < height;y++){
for(int x = 0;x < width;x++){
tiles[x][y] = Utils.parseInt(tokens[(x + y * width) + 4]);
}
}
}
它需要作为 String 加载,因为我需要将每个 String 从中拆分为一个 Array。管理这个问题的正确方法是什么?
编辑:这是堆栈跟踪:
C:\Users\User>java -jar C:\Users\User\Desktop\Game.jar
Exception in thread "Thread-0" java.lang.NullPointerException
at dev.codenmore.tilegame.worlds.World.loadWorld(World.java:76)
at dev.codenmore.tilegame.worlds.World.<init>(World.java:36)
at dev.codenmore.tilegame.states.GameState.<init>(GameState.java:14)
at dev.codenmore.tilegame.Game.init(Game.java:61)
at dev.codenmore.tilegame.Game.run(Game.java:94)
at java.lang.Thread.run(Unknown Source)
答:
0赞
Gandalf1783
4/19/2019
#1
我成功了!我使用以下代码来读取文件: InputStream 流 = World.class.getResourceAsStream(“/worlds/world1.txt”); 也许是越野车,但至少它有效!
评论
0赞
4/19/2019
伟大。现在,您需要从 Stream 中读取并从文件中获取文本。
0赞
Gandalf1783
4/19/2019
@Benson99 Stream 一直在工作,但它没有找到资源。那是因为它没有用。我只需要找到正确的方法来加载它。但无论如何,感谢您的帮助:D明天我会把我的答案打勾作为解决方案;)
0赞
Max Alexander Hanna
4/19/2019
#2
始终从调试器开始,我的朋友。我会弹出调试器以查看此处放置的路径 World.class.getResourceAsStream(path)
空指针异常会告诉您,您正在向函数传递一个它无法处理的空值。在调用堆栈的下方,您有
at dev.codenmore.tilegame.worlds.World.loadWorld(World.java:76)
它基本上告诉您 nullPointerException 发生的位置。您的错误堆栈跟踪是这里问题的死赠品。
祝你的项目好运
评论