java - 在 Java 中解析文本文件 - 需要帮助理解 NullPointerException

标签 java nullpointerexception text-files

我是 Java 的新手,我很难理解扫描器和异常。它在“while (!line.matches([\n\r]+”))) 处显示 NullPointerException。我不太确定为什么会这样。我已经初始化了 line 变量,我假设如果扫描仪的下一行是断行,则 while 循环应该结束。如果下一行为空,那么整个外层循环应该结束。为什么这会返回 NullPointerException?

public class Readfile {
private static int inputs = 0;

public void main(String filename) throws Exception {
    URL url = getClass().getResource(filename);
    File file = new File(url.getPath());
    parsefile(file);

}

void parsefile(File file) throws Exception {
    ArrayList<String[]> Inputs = new ArrayList<String[]>();
    BufferedReader br = new BufferedReader(new FileReader(file));
    String line = br.readLine();
    while (line != null){
        LinkedList currentinput = new LinkedList();
        if (line.contains("Input")){
            while (! line.matches("[\\n\\r]+")) {
                System.out.println(line);
                line = br.readLine();
            }
        }else{
            line = br.readLine();
        }
    }
}

最佳答案

您的内部循环还调用了 br.readLine(),因此您需要检查 null。改变

while (! line.matches("[\\n\\r]+")) {

类似于

while (line != null && ! line.matches("[\\n\\r]+")) {

while (! line.matches("[\\n\\r]+")) {
    System.out.println(line);
    line = br.readLine();
    if (line == null) {
        break;
    }
}

关于java - 在 Java 中解析文本文件 - 需要帮助理解 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40568608/

相关文章:

java - 在java中将任何文件转换为二进制

java - 找不到代码中的错误

java - 在Java中初始化大量数组?

c++ - 词频程序-文件输入太大?

seo - 如何创建 google xml 站点地图和 robots.txt 文件?

java - 使用缓冲阅读器在java中读取文本文件时获取空值

java - 如何从 pom.xml 中提取所有依赖项?

java - 代码自动完成后禁用 Intellij IDEA 追加空间

java - Jython 是否需要 Java 版本的 Selenium2 库才能运行?

java - Android NullPointerException 错误消息