SetTest.java中的add方法有問題

跟著老師打的代碼,從ListTest.java復(fù)制過來的testAdd()方法后,除了注釋system.println.out輸出語句,我還注掉了第35行,不然運行后控制臺報錯,可是我看老師沒有注釋這一行!只注釋了輸出語句,為啥呀?這是第一個問題,還有第二個問題,就是我添加的課程,明明是先寫的離散數(shù)學(xué)和匯編語言,后寫的高等數(shù)學(xué)和大學(xué)英雄,可是為什么testForEach()方法遍歷后,控制臺的信息離散數(shù)學(xué)和匯編語言是排在高等數(shù)學(xué)和大學(xué)英語后面的呢?麻煩會的小伙伴講一講哦。謝謝
2019-05-30
coursesToSelect.addAll(2,?Arrays.asList(course2));下標(biāo)你標(biāo)的是2
2019-06-02
你添加了4個,到那時這個數(shù)字和數(shù)組一樣都是從0開始的,所以最大的才3
2019-05-09
package?imooc.imooc.collection;import?java.util.HashSet;import?java.util.Set;/**?*?學(xué)生類?*?*/public?class?Student?{ private?String?id; private?String?name; public?Set<Course>?courses; public?Student(String?id,?String?name)?{ this.id?=?id; this.name?=?name; //?Set接口,無序不重復(fù) this.courses?=?new?HashSet<Course>(); } public?String?getId()?{ return?id; } public?void?setId(String?id)?{ this.id?=?id; } public?String?getName()?{ return?name; } public?void?setName(String?name)?{ this.name?=?name; } public?Set?getCourses()?{ return?courses; } public?void?setCourses(Set?courses)?{ this.courses?=?courses; }}package?imooc.imooc.collection;/**?*?課程類?*?*/public?class?Course?{ private?String?id; private?String?name; public?String?getId()?{ return?id; } public?void?setId(String?id)?{ this.id?=?id; } public?String?getName()?{ return?name; } public?void?setName(String?name)?{ this.name?=?name; } public?Course(String?id,?String?name)?{ this.id?=?id; this.name?=?name; } public?Course()?{ }}package?imooc.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)建一個課程對象,并通過調(diào)用add方法,將課程對象添加到備選課程List中 Course?cr1?=?new?Course("1",?"數(shù)據(jù)結(jié)構(gòu)"); coursesToSelect.add(cr1); Course?cr2?=?new?Course("2",?"C語言"); coursesToSelect.add(0,?cr2); Course[]?course?=?{?new?Course("3",?"離散數(shù)學(xué)"),?new?Course("4",?"匯編語言")?}; coursesToSelect.addAll(Arrays.asList(course)); Course[]?course2?=?{?new?Course("5",?"高等數(shù)學(xué)"),?new?Course("6",?"大學(xué)英語")?}; coursesToSelect.addAll(2,?Arrays.asList(course2)); } public?void?testForeach()?{ for?(Object?obj?:?coursesToSelect)?{ Course?cr?=?(Course)?obj; System.out.println("課程:"?+?cr.getId()?+?":"?+?cr.getName()); } } public?void?testForEachForSet(Student?student)?{ System.out.println("共選擇了"?+?student.courses.size()?+?"門課程"); //?打印輸出,學(xué)生所選的課程! for?(Course?cr?:?student.courses)?{ System.out.println("選了課程:"?+?cr.getId()?+?":"?+?cr.getName()); } } public?static?void?main(String[]?args)?{ //?TODO?Auto-generated?method?stub SetTest?st?=?new?SetTest(); st.testAdd(); st.testForeach(); //?創(chuàng)建一個學(xué)生對象 Student?student?=?new?Student("1",?"小名"); System.out.println("歡迎學(xué)生:"?+?student.getName()?+?"選課!"); //?創(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?:?st.coursesToSelect)?{ if?(cr.getId().equals(courseID))?{ student.courses.add(cr); /** *?Set中,添加某個對象,最終只保留一個該對象(的引用)?Set中,可以添加null *?Set中,可以添加null? */ //student.courses.add(cr); } } } //?打印輸出,學(xué)生所選的課程! st.testForEachForSet(student); }}2019-05-05
數(shù)組下標(biāo)越界了,0~3,位置是0,1,2,3,一共四個,哪有4,只有到3