我正在编写课程作业,当我尝试从文本文件加载时,我遇到异常。
我正在尝试存储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秒)
答案 0 :(得分:3)
以{/ p>开头的while
循环的条件
while (line.trim() != ("Selected")) {
...
始终满足,因此您最终会读取文件的末尾。 line
最终成为null
,line.trim()
获得NPE。
永远不要将字符串与==
或`!=进行比较;改为使用String.equals():
while (!line.trim().equals("Selected")) {
...
答案 1 :(得分:0)
修复你的内在条件
while (line != null && line.trim() != ("Selected")) {
line = br.readLine();
}
改善你获得正确输出的逻辑。