練習(xí)題,通過(guò)ASCII碼實(shí)現(xiàn),幫我看看有沒(méi)有哪里不對(duì),是否所有的字母和數(shù)字都包含了,謝謝!
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class RandomString {
public void test(){
List<String> list=new ArrayList<String>();
Random random=new Random();
//通過(guò)for循環(huán)來(lái)設(shè)置字符串
for(int I=0;I<10;I++){
String z = "";
//隨機(jī)生成字符串的長(zhǎng)度數(shù) 1~9
int cd=random.nextInt(9)+1;
do{
//隨機(jī)生成長(zhǎng)度已定的字符串
for(int i=0;i<cd;i++){
int a;
do{
a=random.nextInt(75)+48;
}while(a>90 && a<97 || a>57 && a<65);
char b=(char)a;
z+=b;
}
}while(list.contains(z));
list.add(z);
}
System.out.println("--------排序前--------");
for (String string : list) {
System.out.print(string+",");
}
System.out.println();
System.out.println("--------排序后--------");
Collections.sort(list);
for (String string : list) {
System.out.print(string+",");
}
}
public static void main(String[] args) {
RandomString rs=new RandomString();
rs.test();
}
}
2016-05-17
從運(yùn)行來(lái)看,應(yīng)該都包含在內(nèi)了,如果你擔(dān)心是不是覆蓋了所有字母和數(shù)字,那不如先創(chuàng)建一個(gè)包含了所有字母和數(shù)字的字符串,新生成的隨機(jī)字符串的字符均取自這個(gè)字符串,這樣就不用擔(dān)心了。
另外,創(chuàng)建可變的字符串變量,感覺(jué)?StringBuffer str=new StringBuffer(); 更合適一些。
這里列出另一種方法供參考:
2016-07-07
謝了,原來(lái)Java里不是128個(gè)字符都能顯示出來(lái)的...
我把所有的128個(gè)ASCII碼轉(zhuǎn)為字符,做出來(lái)亂碼...