2014-01-08 7 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

Какая строка линии 31 в Course.java? – rgettman

+0

нет, это не так, но я не знаю, как его инициализировать? – user3075117

ответ

3

В соответствии с Вашим комментарием

for (Student student : students){ 

студентов является массивом, а не инициализирован.

Поскольку вы используете массивы, то инициализация будет

Student[] students = new Student[capacity]; 

Remmeber, что когда вы инициализировать массив, значение по умолчанию будет null до тех пор пока, если не заполнить их. В вашем цикле вы должны проверить null, как раз это вызывает NullPOinterException

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

Не смотрите более поздние коды 'students [numberOfStudents ++] = newStudent;' OP пытается использовать массив, я думаю. –

+0

Хотя это правда, ему также понадобится проверка «null» внутри его цикла, так как элементы массива не инициализируются. –

+0

@BrianS Да Мозг, я нахожусь на пути к редактированию. –

2

проблему, действительно инициализации, один или несколько из ниже не инициализирован:

newStudent, студентов.

as Student - это объект, для которого требуется инициализация, прежде чем вы сможете использовать его, в отличие от примитивных типов.

Смежные вопросы