繁体   English   中英

如何在Java中将字符串从txt文件转换为不同的子字符串

[英]How to transform Strings from a txt file to different substrings in java

所以我在类LevelLoader中使用了loadLevel方法,我想读取文件并将其转换为tilemap。 这基本上是2D Tiles数组。 方块具有2个参数:id和Damage

该文件如下所示:

00.05;00.05;00.04;02.03;
00.05;01.00;01.00;02.03;
00.05;01.00;01.00;02.04;
00.05;00.05;03.00;02.01;

第一个数字是id,第二个值是伤害。 该级别有4行4列。

目前,我的方法如下所示:

public TileMap loadLevel(String path){
    Tile[][] tiles = new Tile[12][12];
    try {
        BufferedReader br = new BufferedReader(new FileReader(path));
        String line = null;
        int i = 0;
        while ((line = br.readLine()) != null) {
            for(int j = 0; j < line.length() / 6; j++){
                int id = valueOf(line.substring(j*6, 2);
                int damage = valueOf(line.substring(j*6 + 3, 2);
                tiles[i][j].setTile(id, damage);
                //this is where the error comes from
            }
            i++;
        }
        br.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return new TileMap(tiles);
}

我使用12作为最大宽度和高度。 当我尝试运行此代码时,在for循环中收到NullPointerException。 我尝试了多种方法来加载该文件,但是找不到有效的方法。

任何人都可以解释为什么会发生这种情况,并可能说我应该怎么做吗? 感谢您阅读本文。

您尚未初始化Tile数组元素,仅初始化了数组。

为此,您需要使用以下习惯用法:

tiles[outer index][inner index] = new Tile(); // assuming default no-args constructor

Object的默认值为null ,在其上调用setTile ,从而setTile NullPointerException

您已创建数组,但未创建其元素。

Tile[][] tiles = new Tile[12][12];

创建一个Tile数组,但每个条目都为null 您需要显式创建它们,例如:

for (int i = 0; i < 12; ++i) {
    for (int j = 0; j < 12; ++j) {
        tiles[i][j] = new Tile();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM