/**
?*?生成隨機字符串并排序
?*?@param?args
?*/
public?void?testStringSort(){
String?str?=?"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
List<String>?stringList?=?new?ArrayList<String>();
for(int?i?=?0;i?<?10;i++){
StringBuilder?sb?=?new?StringBuilder();//創建一個新的新的字符串對象
//???????? 第一次while循環用來檢查是否產生相同的字符串,如果相同,重新執行,不同則添加到stringList中
do{
int?stringLength?=?random.nextInt(10);
//確保隨機產生的數字不為0,也就是確保字符串的長度不為0
if(stringLength?==?0){
continue;
}?else?{
for(int?j?=?0;j?<?stringLength;j++){
int?num?=?random.nextInt(str.length());//隨機產生一個str的索引位置
sb.append(str.charAt(num));//將str在num位置上的字符增加到sb字符串對象中
}
}
}while(stringList.contains(sb.toString()));
stringList.add(sb.toString());
System.out.println("成功添加字符串:?"?+?sb.toString());
}
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);
}
2017-03-04
當stringLength等于0的時候,執行continue,然后判斷循環條件,條件為假,循環結束,空串被添加到List中。建議修改方法:在條件中加一個判斷。while (stringList.contains(sb.toString())||sb.toString().equals(""))。當List中不存在此字符串或者sb為空串的時候執行循環。
2017-03-16
int?num?=?random.nextInt(str.length());這里有問題
應該把str.length()改為str.length()-1; ? ?charAt第一個數對應的是0而不是1
2017-03-03
運行的過程中發現生成的字符串有空的情況,哪里出現BUG了?