kmustwh
2015-11-30 14:14
我先定义了一个字符串用来存放0-9,A-Z,a-z字符,程序和问答中各位朋友所述的一样,运行是没有问题的,但是有时会出现生成了空字符串的现象,请问是为什么?
如下:
成功添加字符串:dHh
成功添加字符串:54
成功添加字符串:llPn79BN
成功添加字符串:
成功添加字符串:xUMCX
成功添加字符串:h
成功添加字符串:E
成功添加字符串:D3jPaDdH
成功添加字符串:gwSrek
成功添加字符串:
----------排序前-----------
字符串为:dHh
字符串为:54
字符串为:llPn79BN
字符串为:
字符串为:xUMCX
字符串为:h
字符串为:E
字符串为:D3jPaDdH
字符串为:gwSrek
字符串为:
----------排序后-----------
字符串为:
字符串为:
字符串为:54
字符串为:D3jPaDdH
字符串为:E
字符串为:dHh
字符串为:gwSrek
字符串为:h
字符串为:llPn79BN
字符串为:xUMCX
k=random.nextInt(10); //这里0~10以内的随机数
//当K的值为0时 添加到sb中的字符为空 转为字符串以后自然也就是空字符串 添加到集合中输出的就是空字符串
//可以改成
k=random.nextInt(9) + 1; // 0~9以内的随机数+1 相当于1~10以内的随机数 避免了k值为0的问题
k=random.nextInt(10);这个地方的k值为零时,就出现空字符, 你可以改成k =1+random.nextInt(9);
k=random.nextInt(10);这个地方的k值为零时,就出现空字符,你可以改成while((k=random.nextInt(10))==0);
贴出来代码瞅瞅,是不是截图的开始位置和结束位置一样了,导致截图了0长度的字符串。
这是我的方法:
public void testSort3(){
List<String> stringList =new ArrayList<String>();
Random random=new Random();
String base="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
Integer k;
for(int i=0;i<10;i++){
StringBuilder sb=new StringBuilder();
do{
k=random.nextInt(10);
for(int j=0;j<k;j++){
int number=random.nextInt(base.length());
sb.append(base.charAt(number));
}
sb.toString();
}while(stringList.contains(sb));
System.out.println("成功添加字符串:"+sb);
stringList.add(sb.toString());
}
System.out.println("----------排序前-----------");
for (String string1 : stringList) {
System.out.println("字符串为:"+string1);
}
Collections.sort(stringList);
System.out.println("----------排序后-----------");
for (String string : stringList) {
System.out.println("字符串为:"+string);
}
}
Java入门第三季
409792 学习 · 4340 问题
相似问题