问答详情
源自:6-5 应用 Collections.sort() 实现 List 排序

随机生成字符串,出现了空字符串是什么原因?

我先定义了一个字符串用来存放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

 

提问者:kmustwh 2015-11-30 14:14

个回答

  • 任性的源代码
    2015-12-06 13:29:43
    已采纳

    k=random.nextInt(10); //这里0~10以内的随机数 

    //当K的值为0时 添加到sb中的字符为空 转为字符串以后自然也就是空字符串  添加到集合中输出的就是空字符串

    //可以改成

    k=random.nextInt(9) + 1; // 0~9以内的随机数+1 相当于1~10以内的随机数 避免了k值为0的问题



  • 帅弟弟
    2015-12-10 09:38:54

    k=random.nextInt(10);这个地方的k值为零时,就出现空字符, 你可以改成k =1+random.nextInt(9);

  • luckIsAttitude
    2015-11-30 15:13:33

    k=random.nextInt(10);这个地方的k值为零时,就出现空字符,你可以改成while((k=random.nextInt(10))==0);

  • 敞篷帅哥
    2015-11-30 14:17:47

    贴出来代码瞅瞅,是不是截图的开始位置和结束位置一样了,导致截图了0长度的字符串。

  • kmustwh
    2015-11-30 14:15:57

    这是我的方法:

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

    }

    }