gpt4 book ai didi

java - 使用 line.Split 创建带有文本文件的自定义二维数组 Tile Map 会出现空异常错误

转载 作者:行者123 更新时间:2023-11-29 05:39:27 25 4
gpt4 key购买 nike

我已经编写了以下代码来从文本文件中读取瓦片 map ,但是由于我无法弄清楚的原因,我收到了一个空点异常错误。

阅读器代码:

BufferedReader br = new BufferedReader(new FileReader(s));

readMapWidth = Integer.parseInt(br.readLine());
readMapHeight = Integer.parseInt(br.readLine());
map = new int[readMapHeight][readMapWidth];

for(int row = 0; row < readMapHeight; row++) {
String line = br.readLine();
System.out.println(line);
String[] tileValues = line.split(",");
for(int col = 0; col < readMapWidth; col++){
map[row][col] = Integer.parseInt(tileValues[col]);

}
}
}

文本文件内容:

enter image description here

命令控制台返回的错误:

java.lang.NullPointerException
at TileMap.<init>(TileMap.java:58)

这是一行:

                String[] tileValues = line.split(",");

这些线条读起来很完美,我可以将 map 绘制到屏幕上。但是我需要一个实际存储的 2d 数组以便稍后用于寻路,但是这一行返回了一个空值,我不明白为什么。

这是让我感到困惑的“System.out.println(line)”返回的内容:

[final line of the map here, map lines print as normal]
null

零?我不明白,我的文本文件只有 27 行,关于拆分的空异常来自哪里?

最佳答案

看来你已经到了文件末尾或遇到了一个空行,导致你的行字符串在这里为空:

        String[] tileValues = line.split(",");

最好检查文件结尾,或者至少在对文件进行拆分之前检查行是否为空。

  for(int row = 0; row < readMapHeight; row++) {
String line = br.readLine();
if(line == null || line.isEmpty()) {
System.out.println("Line is empty or null");
} else {
System.out.println(line);
String[] tileValues = line.split(",");
for(int col = 0; col < readMapWidth; col++){
map[row][col] = Integer.parseInt(tileValues[col]);

}
}
}

关于java - 使用 line.Split 创建带有文本文件的自定义二维数组 Tile Map 会出现空异常错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18178130/

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