小白求大神看看这段java代码,会抛出异常,求指点!!多谢

原问题:小白求大神看看这段java代码,会抛出异常,求指点!!多谢
分类:编程开发 > 最后更新时间:【2016-12-29 01:15:47】
问题补充:

public void teseSort3(){

List<String> sList = new ArrayList<String>();

StringBuffer sb = new StringBuffer();

Random random = new Random();

String st = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLMNBVCXZ1234567890";

Integer k;

do{

for (int i = 0; i < 10 ; i++){

k = random.nextInt(10);

for (int j = 0; j < k; j++)

{

int a = random.nextInt();

sb.charAt(st.charAt(a));

}

sList.add(sb.toString());

System.out.println("随机生成的字符串为:" + sb.toString());

sb.setLength(0);

}

}while(sList.contains(sList));

System.out.println("--------------排序前--------------------");

for (String string : sList)

{

System.out.println("元素: " + string);

}

Collections.sort(sList);

System.out.println("----------------排序后--------------------------");

for (String string : sList)

{

System.out.println("元素: " + string);

}

}

最佳答案

你的程序中

sb.charAt(st.charAt(a));

这个有两个问题

1,你的a是随机的整形,它可以大到2147483647你的st才52个,下标当然溢出了

2,即使你的a在51以内,你的sb没有初始值,它的下标只能为0,这个也是溢出了

没细研究你程序的作用,至少你要了解charAt相当于数组下标,它的参数不能大于数据长度的

最佳答案由网友  whoami1978  提供
公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
14

分享到:

其他回答

暂无其它回答!

    推荐