qq_之恩赫奥丶_0
2016-05-17 15:01
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();
//通过for循环来设置字符串
for(int I=0;I<10;I++){
String z = "";
//随机生成字符串的长度数 1~9
int cd=random.nextInt(9)+1;
do{
//随机生成长度已定的字符串
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();
}
}
从运行来看,应该都包含在内了,如果你担心是不是覆盖了所有字母和数字,那不如先创建一个包含了所有字母和数字的字符串,新生成的随机字符串的字符均取自这个字符串,这样就不用担心了。
另外,创建可变的字符串变量,感觉 StringBuffer str=new StringBuffer(); 更合适一些。
这里列出另一种方法供参考:
List <String> strList= new ArrayList<String>(); String base="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; Random random=new Random(); Integer k; for (int i=0; i<10;i++){ StringBuffer str=new StringBuffer(); do{ k=random.nextInt(10); } while(k==0); do{ for(int j=0;j<k;j++){ int num=random.nextInt(base.length()); str.append(base.charAt(num)); } }while(strList.contains(str.toString())); strList.add(str.toString()); }
谢了,原来Java里不是128个字符都能显示出来的...
我把所有的128个ASCII码转为字符,做出来乱码...
Java入门第三季
409792 学习 · 4340 问题
相似问题
回答 2
回答 2