public?void?testSort3(){
List?<String>?stringList?=?new?ArrayList<String>();
Random?random?=?new?Random();
String?allPossible="QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm";
for(int?i=0;i<3;i++){??????
StringBuffer?s=new?StringBuffer();
????int?k=random.nextInt(10);????//隨機決定字符串的長度
????for(int?j=0;j<k;j++){
????char?c=s.charAt(random.nextInt(allPossible.length()));
????s.append(c);?????????????//追加到s之后
????}
????String?str=s.toString();
????stringList.add(str);
}
System.out.println("-------------排序前-------------");
for(String?string:stringList){
System.out.println("元素:"+string);
}
Collections.sort(stringList);
System.out.println("-------------排序后-------------");
for(String?string:stringList){
System.out.println("元素:"+string);
}
}
2016-05-14
同學你第10行:s.charAt(random.nextInt(allPossible.length()))寫錯了,s是字符緩沖區啊,你這句是在找什么~~應該是allPossible.charAt(random.nextInt(allPossible.length()))
另外其中的?random.nextInt(allPossible.length())?最好改成random.nextInt(allPossible.length()-1),因為charAt尋找的下標是從0~length()-1,雖然隨機函數取到最后的length()這個數的幾率不大,但是一旦隨機到最后的這個數了就會出bug,所以最后應該改成allPossible.charAt(random.nextInt(allPossible.length()-1))~~已運行,其他的地方應該沒錯了,如果有什么問題歡迎指正~~~