从文本文件中读取时的java.lang.NullPointerException

时间:2017-04-21 11:08:08

标签: java nullpointerexception

我正在编写课程作业,当我尝试从文本文件加载时,我遇到异常。

我正在尝试存储ID和问题。

输出应为:

{285 = Fill in the blank. A Node is generally defined inside another class, making it a(n) ____ class. }
{37 = How would you rate your programming skills?} 

这是在文本文件中:

258 MC
Question
Fill in the blank. A Node is generally defined inside another class, making it a(n) ____ class.
Answer
Private
Inner
Public
Internal
Selected
2

37 L5
Question
How would you rate your programming skills?
Answer
Excellent
Very good
Good
Not as good as they should be
Poor
Selected
-1
public static void main(String[] args) throws IOException {

 try (BufferedReader br = new BufferedReader(new FileReader("questions.txt"))) {


  Map < Integer, String > map = new HashMap < Integer, String > ();
  String line = br.readLine();


  while (line != null) {
   String[] temp;

   temp = line.split(" ");
   int id = Integer.parseInt(temp[0]);

   line = br.readLine();
   line = br.readLine();

   String question = line;
   line = br.readLine();
   line = br.readLine();

   while (line.trim() != ("Selected")) {

    line = br.readLine();

   }

   line = br.readLine();
   int selected = Integer.parseInt(line);
   line = br.readLine();

   map.put(id, question);
   System.out.println(map);
  }
 }

}

运行代码时我得到了:

  

线程中的异常&#34; main&#34; java.lang.NullPointerException at   daos.test.main(test.java:47)C:\ Users \ droop \ Desktop \ DSA \ New   folder \ dsaCW2Template \ nbproject \ build-impl.xml:1076:以下内容   执行此行时发生错误:   C:\ Users \用户下垂\桌面\ DSA \新   folder \ dsaCW2Template \ nbproject \ build-impl.xml:830:Java返回:1   BUILD FAILED(总时间:0秒)

2 个答案:

答案 0 :(得分:3)

以{/ p>开头的while循环的条件

while (line.trim() != ("Selected")) {
  ...
始终满足

,因此您最终会读取文件的末尾。 line最终成为nullline.trim()获得NPE。

永远不要将字符串与==或`!=进行比较;改为使用String.equals():

while (!line.trim().equals("Selected")) {
    ...

答案 1 :(得分:0)

修复你的内在条件

while (line != null && line.trim() != ("Selected")) {

   line = br.readLine();

}

改善你获得正确输出的逻辑。