新手請(qǐng)問這個(gè)程序哪里出錯(cuò),跪求大神解答?。。。?!
/**
* 3.對(duì)其他類型泛型的List進(jìn)行排序,以Student為例。
* 其中生成的id為1000以內(nèi)不重復(fù)的整數(shù)
*/
public void testStudentSort() {
Random r= new Random();
for(int i=0;i<3;i++ ) {
int id=r.nextInt(1000);
String name =dllx.next();
System.out.println("請(qǐng)輸入第"+(i+1)+"個(gè)學(xué)生的姓名:");
do{
student.add(new Student(id+"",name));
}while (student.contains(id));
}
System.out.println("--------------排序前------------");
for (Student student2 : student) {
System.out.println(student2.getId()+":"+student2.getName());
}
Collections.sort(student);
System.out.println("--------------排序后------------");
for (Student student2 : student) {
System.out.println(student2.getId()+":"+student2.getName());
}
}
2018-08-30
正確思路是:do的時(shí)候隨機(jī)一個(gè)ID,while的時(shí)候判斷是否包含這個(gè)ID,然后花括號(hào)中添加這個(gè)ID
這樣就形成了一個(gè)ID的隨機(jī)添加,for循環(huán)3次。
在一開始如果需要有一個(gè)循環(huán)有固定的多個(gè)結(jié)果,優(yōu)先使用for
for3次循環(huán),用if判斷contains,然后添加。
這樣思路就不會(huì)亂,并且在需要擴(kuò)展的時(shí)候也很方便
當(dāng)然dowhile更符合你的胃口的話,也挺好
我在實(shí)現(xiàn)的時(shí)候其實(shí)為了讓思路更加清晰,使用了三個(gè)while進(jìn)行判斷三個(gè)隨機(jī)數(shù)互不相等,然后直接使用三個(gè)while當(dāng)中的參數(shù)引用到new Student的ID當(dāng)中去,這樣雖然看起來笨重,但是對(duì)于原始的代碼影響最小,但是也不符合后期的修改和擴(kuò)容。希望能給你帶來靈感
2018-08-24
你的邏輯是當(dāng)list中存在當(dāng)前id時(shí),會(huì)一直添加這個(gè)student
2018-06-01
System.out.println("請(qǐng)輸入第"+(i+1)+"個(gè)學(xué)生的姓名:");這句不應(yīng)該寫在前面嗎?