为了账号安全,请及时绑定邮箱和手机立即绑定

为什么会出现java.lang.nullpointerexception错误

  public void testSetContains(){

  //提示输入课程名称

  System.out.println("请输入学生已选的课程名称:");

  String name=console.next();

  //创建一个新的课程对象,ID和名称,与course对象完全一样

  Course course2=new Course();

  course2.name=name;

  System.out.println("新创建课程:"+course2.name);

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

  }



执行到画线句出现错误,问题应该在student.courses.contains(course2),但是已经定义public Student student;  而且

public class Student {

public String id;


public String name;


public Set<Course> courses;//Set和List一样都是Collection的子接口


public Student(String id,String name){

this.id=id;

this.name=name;

this.courses=new HashSet<Course>(); 

}

}


正在回答

6 回答

contains方法里面调用了hashcode()和equal()方法,当hashcode()方法返回TRUE时,才继续调用equals()方法,所以这个地方需要重写hashcode()方法

0 回复 有任何疑惑可以回复我~

我也犯了相同的错误,原因在创建学生并选课的方法里面,public void createStudentAndSelectCourses()的第一行代码是student=new Student("1","小明"),而不是Student student=new Student("1","小明"),因为student已经在前面定义过的,是公有属性

0 回复 有任何疑惑可以回复我~

创建学生对象并选课方法里面的第一行代码   s tudent = new Student("1", "小明");你看你的是这个么

0 回复 有任何疑惑可以回复我~

testSetContains(Student student)

0 回复 有任何疑惑可以回复我~

你这个student对象里没有传进去东西,是空的

0 回复 有任何疑惑可以回复我~

我记得老师在讲这个的时候好像在Student类中重写了equal()方法,你再看看原视频,只要是照着来的,应该不会有错

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么会出现java.lang.nullpointerexception错误

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信