/**
?*?生成隨機(jī)字符串并排序
?*?@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();//創(chuàng)建一個(gè)新的新的字符串對象
//???????? 第一次while循環(huán)用來檢查是否產(chǎn)生相同的字符串,如果相同,重新執(zhí)行,不同則添加到stringList中
do{
int?stringLength?=?random.nextInt(10);
//確保隨機(jī)產(chǎn)生的數(shù)字不為0,也就是確保字符串的長度不為0
if(stringLength?==?0){
continue;
}?else?{
for(int?j?=?0;j?<?stringLength;j++){
int?num?=?random.nextInt(str.length());//隨機(jī)產(chǎn)生一個(gè)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
當(dāng)stringLength等于0的時(shí)候,執(zhí)行continue,然后判斷循環(huán)條件,條件為假,循環(huán)結(jié)束,空串被添加到List中。建議修改方法:在條件中加一個(gè)判斷。while (stringList.contains(sb.toString())||sb.toString().equals(""))。當(dāng)List中不存在此字符串或者sb為空串的時(shí)候執(zhí)行循環(huán)。
2017-03-16
int?num?=?random.nextInt(str.length());這里有問題
應(yīng)該把str.length()改為str.length()-1; ? ?charAt第一個(gè)數(shù)對應(yīng)的是0而不是1
2017-03-03
運(yùn)行的過程中發(fā)現(xiàn)生成的字符串有空的情況,哪里出現(xiàn)BUG了?