public void testSort3(){ List <String> stringList = new ArrayList<String>(); Random random = new Random(); String allPossible="QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm"; for(int i=0;i<3;i++){ StringBuffer s=new StringBuffer(); int k=random.nextInt(10); //随机决定字符串的长度 for(int j=0;j<k;j++){ char c=s.charAt(random.nextInt(allPossible.length())); s.append(c); //追加到s之后 } String str=s.toString(); stringList.add(str); } 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); } }
同学你第10行:s.charAt(random.nextInt(allPossible.length()))写错了,s是字符缓冲区啊,你这句是在找什么~~应该是allPossible.charAt(random.nextInt(allPossible.length()))
另外其中的 random.nextInt(allPossible.length()) 最好改成random.nextInt(allPossible.length()-1),因为charAt寻找的下标是从0~length()-1,虽然随机函数取到最后的length()这个数的几率不大,但是一旦随机到最后的这个数了就会出bug,所以最后应该改成allPossible.charAt(random.nextInt(allPossible.length()-1))~~已运行,其他的地方应该没错了,如果有什么问题欢迎指正~~~