如何在这段代码中处理NullPointerException?

时间:2014-01-08 19:19:22

标签: java nullpointerexception

我是java新手,我的代码中有这个例外:

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);

我试过解决它但没有实现。我搜索了它,我猜问题是初始化。这是真的吗?如果是的话,我不知道如何处理,任何想法??

2 个答案:

答案 0 :(得分: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;
         }
     }

答案 1 :(得分:2)

问题,确实在初始化,下面的一个或多个未初始化:

newStudent,学生。

因为Student是一个对象,它需要初始化才能使用它,而不是原始类型。