我是 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/