2014-01-08 22 views
0

我在Java新和我有這個例外在我的代碼:如何在這段代碼中處理NullPointerException?

Exception in thread "main" java.lang.NullPointerException 
    at Course.addStudents(Course.java:31) 
    at Third.main(Third.java:28) 

Course.java

public boolean addStudents(Student newStudent){ 
    for (Student student : students){ 
     if (student.getID()== newStudent.getID()){ 
      return false; 
     } 
    } 
    if(numberOfStudents < capacity){  
     students[numberOfStudents++] = newStudent; 
     return true; 
    } 
    return false; 
    } 

Third.java

c1.addStudents(s1); 

我試圖解決這個問題,但沒有達到。我搜索了它,我猜這個問題正在初始化。這是真的嗎?如果是這樣,我不知道如何處理,任何想法?

+1

學生初始化了嗎?它的所有元素是否都已初始化? –

+1

Course.java中的第31行是什麼? – rgettman

+0

不,但我不知道如何初始化它? – user3075117

回答

3

根據您的評論

for (Student student : students){ 

學生是一個數組,未初始化。

由於您使用的陣列,在初始化會

Student[] students = new Student[capacity]; 

Remmeber,當你intialize數組,默認值是null直到除非你填充它們。在你的循環,你必須檢查null因爲它再次引起NullPOinterException

for (Student student : students){ 
     if (student !=null && student.getID()== newStudent.getID()){ 
      return false; 
     } 
    } 
+0

不要看後面的代碼'學生[numberOfStudents ++] = newStudent;'OP正在嘗試使用我猜的數組。 –

+0

雖然這是真的,但他還需要在循環內檢查「null」,因爲數組的元素沒有被初始化。 –

+0

@BrianS是大腦,我正在編輯的方式。 –

2

的問題,確實是初始化,對以下未初始化的一種或多種:

newStudent,學生。

作爲學生是一個對象,它需要一個初始化之前,你可以使用它,而不是原始類型。

相關問題