空指針異常
package imooc_collection_lesson;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class SetTest {
private static final List<Course> coursesToSelect = null;
public List<Course> coursesToCourses;
public SetTest(){
coursesToCourses=new ArrayList<Course>();
}
public void TestAdd(){
//創建一個課程對象,并通過add方法,添加到備選課程中去
Course cou1=new Course("1","數據結構");
coursesToCourses.add(cou1);
Course Temp=(Course)coursesToCourses.get(0);
//System.out.println("添加了一個課程:"+Temp.id+":"+Temp.name);
Course cou2=new Course("2", "C語言");
coursesToCourses.add(0,cou2);
Course Temp2=(Course)coursesToCourses.get(0);
//System.out.println("添加了一個課程:"+Temp2.id+":"+Temp2.name);
//以下方法會拋出數組下標越界異常
/* Course cou3=new Course("3", "大學英語");
courseToSelect.add(4,cou3);
*/
//Course cou3=new Course("1", "數據結構");
//courseToSelect.add(2,cou3);
Course[] course={new Course("3","離散數學"),
new Course("4","匯編語言")};
coursesToCourses.addAll(Arrays.asList(course));
Course Temp3=(Course) coursesToCourses.get(2);
Course Temp4=(Course) coursesToCourses.get(3);
//System.out.println("添加了兩門課程:"+Temp3.id+":"+Temp3.name
// +Temp4.id+":"+Temp4.name);
Course[] course2={new Course("5","高等數學"),
new Course("6","大學體育")};
coursesToCourses.addAll(2,Arrays.asList(course2));
Course Temp5=(Course) coursesToCourses.get(2);
Course Temp6=(Course) coursesToCourses.get(3);
//System.out.println("添加了兩門課程:"+Temp5.id+":"+Temp5.name
// +Temp6.id+":"+Temp6.name);
}
public void testForEach(){
System.out.println("有如下課程待選(通過for each訪問):");
for(Object obj:coursesToCourses){
Course sr=(Course) obj;
System.out.println("課程:"+sr.id+";"+sr.name);
}
}
/**
?* 測試List的contains方法
?*/
public void testListContains() {
// 取得備選課程序列的第0個元素
Course course = coursesToSelect.get(0);
// 打印輸出coursesToSelected是否包含course對象
System.out.println("取得課程:" + course.name);
System.out.println("備選課程中是否包含課程:" + course.name + ", " +?
coursesToSelect.contains(course));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
SetTest st=new SetTest();
st.TestAdd();
st.testListContains();
}
public void testForEachForSet(Student student)
{
for (Course sr : student.Courses) {
System.out.println("選擇了課程:"+sr.id+":"+sr.name);
? ? }
}
}
執行時報錯Exception in thread "main" java.lang.NullPointerException at imooc_collection_lesson.SetTest.testListContains(SetTest.java:67) at imooc_collection_lesson.SetTest.main(SetTest.java:77)
2017-03-21
coursesToSelect這個字段為空哦,所以報了Null 指針異常,而且定義為static final的話就永遠等于空啦
可以改成
private static List<Course> coursesToSelect = new ArrayList<Course>();