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

标签 java split text-files game-engine multidimensional-array

我已经编写了以下代码来从文本文件中读取瓦片 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/

相关文章:

java - 创建动态 JLabel 和 JButton

java - 如何从另一个 ActionListener 访问一个 ActionListener 中的 Array List 元素?

python - 拆分列表中的字符串以查找和替换 python 中的元素

javascript - 读取文本文件并返回内容

java - 从文本文件中提取匹配行

java - 使用 javax.print API 打印纯文本

java - 在测试案例中在Objectify中注册实体出现问题

bash - 将 GNU Parallel 与 Split 结合使用

php - 如何在PHP中的特定字/字符限制后添加“…”?

windows - 在命令行 (Windows) 中将文本添加到另一个文本文件开头的最简单方法