大神大神來瞅瞅,這是何方妖孽在作怪
按照老師講的打出來之后,老師的正常運轉,我的出現(xiàn)了這樣的結果
有如下課程待選(通過for each訪問):
課程:2:C語言
課程:1:數(shù)據(jù)結構
課程:5:高等數(shù)學
課程:6:大學英語
課程:3:離散數(shù)學
課程:4:匯編語言
歡迎學生:小明選課!
請輸入課程ID
2
請輸入課程ID
5
請輸入課程ID
6
共選擇了:3門課程!
選擇了課程6:大學英語
選擇了課程2:C語言
選擇了課程5:高等數(shù)學
請輸入學生已選的課程名稱:
高等數(shù)學
新創(chuàng)建課程:高等數(shù)學
Exception in thread "main" java.lang.NullPointerException
at com.imooc.cellection.SetTest.testSetContains(SetTest.java:132)
at com.imooc.cellection.SetTest.main(SetTest.java:144)
這是什么情況呀?????
2017-10-06
創(chuàng)建學生對象并選課方法里面看一下是這一句student = new Student("1", "小明");而不是Student?student = new Student("1", "小明");這一句么,前一句是對的,后一句是錯的
2017-09-16
太多了 不看了
2017-09-16
在你的?testSetContains 方法中??System.out.println("備選課程是否包含課程:"+course2.name+","+student.courses.contains(course2));
這句代碼中的student 沒有進行初始化,就去讀取它的courses,肯定會報空指針的錯誤
2017-09-16
package com.imooc.cellection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class SetTest {
public List<Course>coursesToSelect;
private Scanner console;?
public Student student;
public SetTest(){
coursesToSelect = new ArrayList<Course>();
console = new Scanner(System.in); ?//初始化
}
public void testAdd(){
//創(chuàng)建一個課程對象,并通過調用add方法,添加到備選課程List中
Course cr1 = new Course("1","數(shù)據(jù)結構");
coursesToSelect.add(cr1);
Course temp = (Course)coursesToSelect.get(0);
// System.out.println("添加了課程:"+temp.id+":"+temp.name);
Course cr2 = new Course("2","C語言");
coursesToSelect.add(0,cr2);
Course temp2 = (Course)coursesToSelect.get(0);
// System.out.println("添加了課程:"+temp2.id+":"+temp2.name);
// coursesToSelect.add(cr1);
// Course temp0 = (Course)coursesToSelect.get(2);
// System.out.println("添加了課程:"+temp.id+":"+temp0.name);
//以下方法會拋出數(shù)組下標越界異常
// Course cr3 = new Course("3","test");
// coursesToSelect.add(4,cr3);
Course[] course = {new Course("3","離散數(shù)學"),new Course("4","匯編語言")};
coursesToSelect.addAll(Arrays.asList(course));
Course temp3 = (Course)coursesToSelect.get(2);
Course temp4 = (Course)coursesToSelect.get(3);
// System.out.println("添加了兩門課程:"+temp3.id+":"+temp3.name+";"+temp4.id+":"+temp4.name);
Course[] course2 = {new Course("5","高等數(shù)學"),new Course("6","大學英語")};
coursesToSelect.addAll(2,Arrays.asList(course2));
Course temp5 = (Course)coursesToSelect.get(2);
Course temp6 = (Course)coursesToSelect.get(3);
// System.out.println("添加了兩門課程:"+temp5.id+":"+temp5.name+","+temp6.id+temp6.name);
}
/*
* 通過for each方法訪問集合元素
* for each方法是迭代器方法的簡便寫法
*/
public void testForEach(){
System.out.println("有如下課程待選(通過for each訪問):");
for(Object obj:coursesToSelect){
?Course cr = (Course)obj;
?System.out.println("課程:"+cr.id+":"+cr.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)); ?//某個序列是否包含某個對象,如果包含,返回true,否側返回false!
//提示輸入課程名稱
System.out.println("請輸入課程名稱:");
String name = console.next(); //從鍵盤中取得輸入的字符串
//創(chuàng)建一個新的課程對象,ID和名稱,與course對象完全一樣
// Course course2 = new Course(course.id,course.name);
//創(chuàng)建course2對象
Course course2 = new Course();
//調用無參構造器
course2.name = name;
System.out.println("新創(chuàng)建課程:"+course2.name);
System.out.println("備選課程中是否包含課程:"+course2.name+","+coursesToSelect.contains(course2));
//通過indexOf方法來取得某元素的需哦吟位置
if(coursesToSelect.contains(course2)){
System.out.println("課程:"+course2.name+"的索引位置為:"+
? ? ? coursesToSelect.indexOf(course2));
}
}
//創(chuàng)建學生對象并選課
public void createStudentAndSelectCours(){
//創(chuàng)建一個學生對象
Student student = new Student("1","小明");
System.out.println("歡迎學生:"+student.name +"選課!");
//創(chuàng)建一個Scanner對象,用來接收從鍵盤輸入的課程ID
Scanner console = new Scanner(System.in);
for(int i=0;i<3;i++){
System.out.println("請輸入課程ID");
String courseId = console.next();
for(Course cr:coursesToSelect){
if(cr.id.equals(courseId)){
student.courses.add(cr); //set.add();和List.add();方法的用法是一樣的
/*
* Set中,添加某個對象,無論添加多少次,
* 最終只會保留一個該對象(的引用)
* 并且,保留的是第一次添加的那一個
* Set中是可以添加愛空對象null的
*/
// student.courses.add(null);
// student.courses.add(cr);?
}
}
}
System.out.println("共選擇了:"+student.courses.size()+"門課程!");
//打印輸出學生所選的課程
for(Course c : student.courses){
System.out.println("選擇了課程"+c.id+":"+c.name);
}
}
/*
* 測試Set的contains方法
*/
public void testSetContains(){
//提示輸入課程名稱
System.out.println("請輸入學生已選的課程名稱:");
String name = console.next();
//創(chuàng)建一個新的課程對象,ID和名稱,與course對象完全一樣
Course course2 = new Course();
course2.name = name;
System.out.println("新創(chuàng)建課程:"+course2.name);
System.out.println("備選課程是否包含課程:"+course2.name+","+student.courses.contains(course2));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
SetTest st = new SetTest();//創(chuàng)建一個SetTest方法
st.testAdd();
// st.testListContains();
st.testForEach();
st.createStudentAndSelectCours();
st.testSetContains();
// st.testForEachForSet(student);
}
public void testForEachForSet(Student student){
//打印輸出,學生所選的課程!
System.out.println("共選擇了:"+ student.courses.size()+"門課程!");
for(Course cr:student.courses){
System.out.println("選擇了課程:"+cr.id+":"+cr.name);
}
? ? }
}
2017-09-16
請把你的代碼貼出來。。。