我在这部分代码上花费了无数个小时,这给了我一个空指针异常。我不明白它为什么会发生或如何阻止它。我已经尝试过之前在 stackoverflow 上发布的所有方法。这是读取数据文件并将每一行放入哈希图中的函数。
public ArrayList<HashMap<String, String>> readDataFromFile(){
this.openFileForReading();
ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String,String>>();
try{
String line;
while ((line = this.reader.readLine()) != null){
while (!(line.equals(""))){
if (line.equals("[type = book]")){
HashMap<String, String> data= new HashMap<>();
line = this.reader.readLine();
while (!(line.equals(""))){<----this is where the null exception error is
String tokens[] = line.split("=");
data.put(tokens[0], tokens[1]);
System.out.println(tokens[0] + " " + tokens[1]);
line = this.reader.readLine();
}
list.add(data);
}
else{
break;
}
}
}
}
catch (IOException exception) {
list = null;
System.err.println("(FileIO): " + exception);
}
// Close the file when we have finished reading or if an error occurs
finally {
try {
this.reader.close();
} catch (IOException exception) {
System.err.println("(FileIO): " + exception);
}
}
return list;
}
然后我用这个在 main 中运行它:
public static void main (String args[]) {
FileIO fileIO = new FileIO(DATA_FILE_PATH);
ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String,String>>();
list = fileIO.readDataFromFile();
}
run:
callnumber“QA76.73.J38S265”作者“Walter Savitch,Kenrich Mock”标题“Absolute Java”出版商“Addison-Wesley”年份“2009”callnumber“P98.C6116”标题“计算语言学”线程“main”java 中的异常。 lang.NullPointerException 组织“计算语言学协会”在 librarysearch.FileIO.readDataFromFile(FileIO.java:160) 年“2008”在 librarysearch.FileIO.main(FileIO.java:405) Java 结果:1 构建成功(总时间: 1秒)
我在发生错误的代码中写了。为什么会这样?我不明白,如果任何人都可以请帮助,将不胜感激。