有人向我解释为什么我会得到空指针异常?
private Observer obs1;
private Observer obs2;
public void notifyObservers(Observable observable) {
String str1 = "Observer 1 :\n";
String str2 = "Observer 2 :\n";
try {
Student[] studList = returnStudents();
for (int i=0;i<returnStudents().length;i++) {
if(studList[i].computeAverage() >= 5)
str1 = str1 + studList[i].toString() + "\n";
else
str2 = str2 + studList[i].toString() + "\n";
}
} catch (MyException ex) {
System.out.println(ex.getMessage());
}
obs1.update(observable, str1);
obs2.update(observable, str2);
}
我的Observer课程:
public class Watcher implements Observer {
public void update(Observable arg0, Object arg1) {
System.out.println("The list of students has changed");
System.out.println(arg1);
}
}
我会在这里解释一下这里发生了什么。我制作了一个管理学生名单的程序。我可以添加/删除学生。 每次添加后我都会打电话
setChanged();
notifyObservers(this);
在这里,我希望观察者1能够显示平均成绩&gt;的学生。 5和观察者2显示平均值<1的那些。 5。
我在这里得到一个空指针异常:obs1.update(observable, str1);
我必须说我尝试打印str1
和str2
并且它们包含学生列表。所以我的猜测是问题出在observable
答案 0 :(得分:2)
我没有看到您在任何地方为obs1
或obs2
分配值。如果未为变量赋值,则为“null”。