World Loader不会将world1.txt作为字符串加载

时间:2019-04-18 16:29:42

标签: java split text-files thread-exceptions

我的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]);
        }
    }
}

由于我需要将每个字符串拆分成一个数组,因此需要将其作为字符串加载。解决这个问题的正确方法是什么?

编辑: 这是堆栈跟踪:

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)

2 个答案:

答案 0 :(得分:0)

我做到了!我使用以下代码读取文件:         InputStream流= World.class.getResourceAsStream(“ / worlds / world1.txt”); 也许是越野车,但至少可以正常工作!

答案 1 :(得分:0)

总是从调试器开始,我的朋友。我会弹出调试器以查看此处放置了什么路径World.class.getResourceAsStream(path)

空指针异常将告诉您,您将无法处理的空值传递给函数。在调用堆栈的更下方,您有

at dev.codenmore.tilegame.worlds.World.loadWorld(World.java:76)

基本上告诉您nullpointerexception发生的位置。您的错误堆栈跟踪记录完全是这里问题的解决方法。

在您的项目中祝您好运