小白求大神看看这段java代码,会抛出异常,求指点!!多谢
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相当于数组下标,它的参数不能大于数据长度的
其他回答
暂无其它回答!