為什么我執(zhí)行中會拋出NullPointerException,求大神指點(diǎn)
public?void?creatStudentAndSelectCourse(){ //創(chuàng)建一個學(xué)生對象 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()+"門課程"); //打印輸出學(xué)生所選的課程 for(Course?c?:?stu1.courses){ System.out.println("選擇了課程"+c.id+":"+c.name); } } /* ?*?*/ public?void?testSetContains(){ //t提示輸入課程名稱 System.out.println("請輸入學(xué)生已選的課程名稱"); String?name?=?console.next(); //創(chuàng)建一個課程對象,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(); }
執(zhí)行結(jié)果
有如下課程待選(通過For each來遍歷):
課程:2:C語言
課程:1:數(shù)據(jù)結(jié)構(gòu)
課程:5:高等數(shù)學(xué)?
課程:6:大學(xué)英語
課程:3:離散數(shù)學(xué)?
課程:4:匯編語言
歡迎:小明選課!
請輸入課程ID
2
請輸入課程ID
5
請輸入課程ID
6
共選擇了:3門課程
選擇了課程5:高等數(shù)學(xué)?
選擇了課程6:大學(xué)英語
選擇了課程2:C語言
請輸入學(xué)生已選的課程名稱
高等數(shù)學(xué)
取得課程:高等數(shù)學(xué)
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)
2017-10-06
第三行的第一個單詞去掉,就沒問題
2017-09-22
? public void testSetContains(Student student)
2017-09-06
已自己找到問題。第一個方法里還用的是stu1,沒有傳信息去類屬性student里。