为了账号安全,请及时绑定邮箱和手机立即绑定

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

	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 回答

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信