Youngkos
2017-09-06 23:25
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)
第三行的第一个单词去掉,就没问题
public void testSetContains(Student student)
已自己找到问题。第一个方法里还用的是stu1,没有传信息去类属性student里。
Java入门第三季
409792 学习 · 4340 问题
相似问题