package?com.imooc.collection;
import?java.util.ArrayList;
import?java.util.Arrays;
import?java.util.List;
import?java.util.Scanner;
public?class?SetTest?{
????public?List<Course>?coursesToSelect;
????
????public?SetTest()?{
????????coursesToSelect?=?new?ArrayList<Course>();
????}
????
????
????
????public?void?testAdd()?{
????????//創(chuàng)建一個(gè)課程對(duì)象,并通過調(diào)用add方法,添加到備選課程list中。
????????Course?cr1?=?new?Course("1","數(shù)據(jù)結(jié)構(gòu)");
????????coursesToSelect.add(cr1);
????????Course?temp?=?(Course)coursesToSelect.get(0);//對(duì)象存入集合都變成Object類型,取出時(shí)需要類型轉(zhuǎn)換
//????????System.out.println("添加了課程:"+temp.id+":"+temp.name);
????????
????????Course?cr2?=?new?Course("2","c語(yǔ)言");
????????coursesToSelect.add(0,cr2);
????????Course?temp2?=?(Course)coursesToSelect.get(0);
//????????System.out.println("添加了課程:"+temp2.id+":"+temp2.name);
????????
????????
????????Course[]?course?=?{new?Course("3","離散數(shù)學(xué)"),new?Course("4","匯編語(yǔ)言")};
????????coursesToSelect.addAll(Arrays.asList(course));
????????Course?temp3?=?(Course)coursesToSelect.get(3);
????????Course?temp4?=?(Course)coursesToSelect.get(4);
//????????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);
????}
????
????public?void?testForEach()?{
????????System.out.println("有如下課程待選(通過for?each訪問):");
????????for?(Object?obj:coursesToSelect)?{
????????????Course?cr?=?(Course)obj;
????????????System.out.println("課程:"+cr.id+":"+cr.name);
????????????
????????}
????}
????
????public?void?testForEachForSet(Student?student)?{
????????//打印輸出學(xué)生所選的課程
????????for(Course?cr:student.courses)?{
????????????System.out.println("選擇了課程:"+cr.id+":"+cr.name);
????????}
????}
????
????public?static?void?main(String[]?args)?{
????????//?TODO?Auto-generated?method?stub
????????SetTest?st?=?new?SetTest();
????????st.testAdd();
????????st.testForEach();
????????//創(chuàng)建一個(gè)新的學(xué)生對(duì)象
????????Student?student?=?new?Student("1","小明");
????????System.out.println("歡迎學(xué)生:"+student.name+"選課");
????????//創(chuàng)建一個(gè)Scanner對(duì)象,用來接收從鍵盤輸入的課程id
????????Scanner?console?=?new?Scanner(System.in);
????????
????????
????????for(int?i?=?0;i<3;i++)?{
????????????System.out.println("請(qǐng)輸入課程id");
????????????String?courseID?=?console.next();
????????????for(Course?cr:st.coursesToSelect)?{
????????????????if(cr.id.equals(courseID))?{
????????????????????student.courses.add(cr);????
????????????????????student.courses.add(cr);
????????????????}
????????????}
????????}????????
????????st.testForEachForSet(student);
????}
????
????
}
2019-02-20
代碼34行中testAdd()中Course temp4 = (Course)coursesToSelect.get(4);有問題,報(bào)錯(cuò)下標(biāo)越界,因?yàn)樵讷@取這個(gè)之前只添加了4門課程,下標(biāo)最多是3.
2019-01-16
34行的get()方法里面的4越界了,此時(shí)coursesToSelect里面只有4個(gè)課程,下標(biāo)范圍為0~3,填4是錯(cuò)的。