大家帮忙看下我写的问题在哪,为什么运行出错

来源:6-5 应用 Collections.sort() 实现 List 排序

今天也要加油鸭丶

2016-05-14 11:59

	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);
		}
	}


写回答 关注

1回答

  • 我要做一只小太阳
    2016-05-14 15:27:29

    同学你第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))~~已运行,其他的地方应该没错了,如果有什么问题欢迎指正~~~

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题