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

为什么我执行中会抛出NullPointerException,求大神指点

public void creatStudentAndSelectCourse(){
		//创建一个学生对象
		Student stu1 = new Student("1","小明");
		System.out.println("欢迎:"+stu1.name+"选课!");
		Scanner input = new Scanner(System.in);  
		for(int i = 0 ; i<3 ; i++){
			System.out.println("请输入课程ID");
			String courseID = input.next();
			for(Course c : coursesToSelect){
				if(c.id.equals(courseID)){
					stu1.courses.add(c); 
					/**
					 * Set中,添加某种对象,无论添加多少次
					 * 最终只会保留一个该对象(的引用)
					 * 并且,保留的是第一次添加的那一个
					 */
				}
			}
		}	
		System.out.println("共选择了:"+stu1.courses.size()+"门课程");
		//打印输出学生所选的课程
		for(Course c : stu1.courses){
			System.out.println("选择了课程"+c.id+":"+c.name);
			}
	}
	/*
	 * */
	public void testSetContains(){
		//t提示输入课程名称
		System.out.println("请输入学生已选的课程名称");
		String name = console.next();
		//创建一个课程对象,ID和名称,并判断备选课程中是否包含课程
		Course course2 = new Course();
		course2.name= name;
		System.out.println("取得课程:"+course2.name);
		System.out.println("备选课程中是否包含此课程"+student.courses.contains(course2));
		
	}
	
	public static void main(String[] args) {
		SetTest st = new SetTest();
		st.testAdd();
		
		st.testForEach();
//		st.testListContains();
//		st.testForEach();
		
		st.creatStudentAndSelectCourse();
		st.testSetContains();

		}



执行结果

有如下课程待选(通过For each来遍历):

课程:2:C语言

课程:1:数据结构

课程:5:高等数学 

课程:6:大学英语

课程:3:离散数学 

课程:4:汇编语言

欢迎:小明选课!

请输入课程ID

2

请输入课程ID

5

请输入课程ID

6

共选择了:3门课程

选择了课程5:高等数学 

选择了课程6:大学英语

选择了课程2:C语言

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

高等数学

取得课程:高等数学

Exception in thread "main" java.lang.NullPointerException

at com.collection_map_demon.SetTest.testSetContains(SetTest.java:90)

at com.collection_map_demon.SetTest.main(SetTest.java:103)


正在回答

3 回答

第三行的第一个单词去掉,就没问题

1 回复 有任何疑惑可以回复我~
#1

qq_木_31

和之后前来学习的人分享一下自己的理解,第三行Student student 重新定义了一个与成员变量同名的局部变量,所以在这个方法里使用的是局部变量,所作的添加赋值操作给了它,而类里面的student并没有接受到添加(为空),所以再调用student.courses.contains()时student.courses为空,所以出现异常。
2018-08-01 回复 有任何疑惑可以回复我~

  public void testSetContains(Student student)

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

已自己找到问题。第一个方法里还用的是stu1,没有传信息去类属性student里。

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

悟能子

我也遇到了这样的问题,请问具体是怎么改的?
2018-05-17 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么我执行中会抛出NullPointerException,求大神指点

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