為什么我執(zhí)行中會(huì)拋出NullPointerException,求大神指點(diǎn)
public?void?creatStudentAndSelectCourse(){
//創(chuàng)建一個(gè)學(xué)生對(duì)象
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("請(qǐng)輸入課程ID");
String?courseID?=?input.next();
for(Course?c?:?coursesToSelect){
if(c.id.equals(courseID)){
stu1.courses.add(c);?
/**
?*?Set中,添加某種對(duì)象,無(wú)論添加多少次
?*?最終只會(huì)保留一個(gè)該對(duì)象(的引用)
?*?并且,保留的是第一次添加的那一個(gè)
?*/
}
}
}
System.out.println("共選擇了:"+stu1.courses.size()+"門(mén)課程");
//打印輸出學(xué)生所選的課程
for(Course?c?:?stu1.courses){
System.out.println("選擇了課程"+c.id+":"+c.name);
}
}
/*
?*?*/
public?void?testSetContains(){
//t提示輸入課程名稱(chēng)
System.out.println("請(qǐng)輸入學(xué)生已選的課程名稱(chēng)");
String?name?=?console.next();
//創(chuàng)建一個(gè)課程對(duì)象,ID和名稱(chēng),并判斷備選課程中是否包含課程
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é)果
有如下課程待選(通過(guò)For each來(lái)遍歷):
課程:2:C語(yǔ)言
課程:1:數(shù)據(jù)結(jié)構(gòu)
課程:5:高等數(shù)學(xué)?
課程:6:大學(xué)英語(yǔ)
課程:3:離散數(shù)學(xué)?
課程:4:匯編語(yǔ)言
歡迎:小明選課!
請(qǐng)輸入課程ID
2
請(qǐng)輸入課程ID
5
請(qǐng)輸入課程ID
6
共選擇了:3門(mén)課程
選擇了課程5:高等數(shù)學(xué)?
選擇了課程6:大學(xué)英語(yǔ)
選擇了課程2:C語(yǔ)言
請(qǐng)輸入學(xué)生已選的課程名稱(chēng)
高等數(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
第三行的第一個(gè)單詞去掉,就沒(méi)問(wèn)題
2017-09-22
? public void testSetContains(Student student)
2017-09-06
已自己找到問(wèn)題。第一個(gè)方法里還用的是stu1,沒(méi)有傳信息去類(lèi)屬性student里。