2014-01-07 4 views
-1

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

+1

Где вы назначаете значения 'obs1' и' obs2'? Они кажутся нулевыми, поэтому NPE. –

+0

Добавьте модификатор 'final' к переменным, и некоторые вопросы никогда не будут заданы. –

ответ

2

Я не вижу, чтобы вы назначили значение obs1 или obs2 в любом месте. Когда переменной не присвоено значение, оно равно «null».

+0

Какой shoul я присваиваю этим значениям, чтобы впоследствии это не повлияло? Какая-то инициализация, но с чем? – user3043278

+0

'obs1 = new Watcher()' 'obs2 = new Watcher()' –

+0

Я решил проблему. Спасибо за помощь. – user3043278