我已经编写了以下代码来从文本文件中读取瓦片 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]);
}
}
}
文本文件内容:
命令控制台返回的错误:
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/