问答详情
源自:6-3 学生选课---获取 List 中课程的位置

出现空指针异常问题


  当我用Student student 对象去调用courses时候,他报出来空指针异常,调用没有初始化的对象

System.out.println("备选课程中是否包含课程:"+course2.name+","+

    student.courses.contains(course2));


请输入学生已选的课程名称:

数据结构

新创建课程:数据结构

Exception in thread "main" java.lang.NullPointerException

at a1.SetTest.testSetContains(SetTest.java:118)

at a1.SetTest.main(SetTest.java:129)


我又换成coursesToSelect对象去调用,程序就能正常运行,这是为什么?为什么会没有初始化对象?视频里的也是直接声明一个student对象

  System.out.println("备选课程中是否包含课程:"+course2.name+","+

    coursesToSelect.contains(course2));


请输入学生已选的课程名称:

数据结构

新创建课程:数据结构

备选课程中是否包含课程:数据结构,true


提问者:慕桂英9831656 2018-08-21 20:57

个回答

  • 慕桂英9831656
    2018-08-22 14:20:04

    student类源码

    public class Student {

     public String id;

     public String name;

     

     public Set<Course> courses; //存储学生课程信息

     

     @Override

    public int hashCode() {

    final int prime = 31;

    int result = 1;

    result = prime * result + ((name == null) ? 0 : name.hashCode());

    return result;

    }


    @Override

    public boolean equals(Object obj) {

    if (this == obj)

    return true;

    if (obj == null)

    return false;

    if (!(obj instanceof Student))

    return false;

    Student other = (Student) obj;

    if (name == null) {

    if (other.name != null)

    return false;

    } else if (!name.equals(other.name))

    return false;

    return true;

    }


    public Student(String id,String name){

    this.id=id;

    this.name=name;

    this.courses = new HashSet<Course>();//实例化

     }



    }


  • ZCpionner
    2018-08-22 10:25:43

    看一下你student类是什么定义的?你发一下student源代码