List<String> st=new ArrayList<String>(); String b="qwertyuiopasdfghjklzxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM0123456789"; Random random=new Random(); for(int i=0;i<10;i++){ String a=""; do{ //首先随机0~10的数字来确定长度 int c=random.nextInt(10)+1; for(int j=0;j<c;j++){ //随机生成0-61的数字,取出b字符串里面相对应位置的字符添加到a里面 int t=random.nextInt(61); a=a+b.charAt(t); } }while(st.contains(a)); st.add(a); System.out.println("将要添加字符串:"+a);
while条件好像写错了,个人认为应该是while(!st.contains(a))
有两个建议:
建议把int c=random.nextInt(10)+1; 改成int c=random.nextInt(9)+1; 这样就不会生成11位的String了。
建议把int t=random.nextInt(61); 改成int t=random.nextInt(b.length()-1); 这样程序更加灵活一些。