Ca, кто-то объясняет мне, почему я получаю исключение из null-указателя?Замечание в java is null
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);
}
}
Я объясню немного wwhat, что здесь происходит. Я создал программу, которая управляет списком студентов. Я могу добавить/удалить студентов. После каждого добавления я называю
setChanged();
notifyObservers(this);
Здесь я хочу, чтобы observer1 показать studens со средним марок> 5 и observer2, чтобы показать те, со средним < 5. я получаю исключения нулевого указателя в здесь: obs1.update(observable, str1);
Должен сказать, что я пытался напечатать str1
и str2
и в них есть список учеников. Поэтому я предполагаю, что проблема в том, что проблема в observable
Где вы назначаете значения 'obs1' и' obs2'? Они кажутся нулевыми, поэтому NPE. –
Добавьте модификатор 'final' к переменным, и некоторые вопросы никогда не будут заданы. –