为什么返回的总不对

来源:6-5 应用 Collections.sort() 实现 List 排序

慕姐4925769

2018-11-22 17:41

package Test;

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

import java.util.Random;


    public class lianxiti {

        List <String> stringList =new ArrayList();

        Random random=new Random();

        String k;

        public void sortTest() {

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

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

                k=stringRandom();

                stringList.add(k);

            }

            for(String string:stringList) {

                System.out.println(string);

            }

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

            Collections.sort(stringList);

            for(String string:stringList) {

                System.out.println(string);

            }

        }

        public String stringRandom() {

            String allString="0123456789zxcvbnmlkjhgfdsaqwertyuiopZXCVBNMKLJHGFDSAQWERTYUIOP";

            StringBuffer sb=new StringBuffer();

            for(int i=0;i<random.nextInt(11);i++){
                //62代表62个字符中随机生成
                sb.append(allString.charAt(random.nextInt(62)));

            }

            return sb.toString();

        }

        public static void main(String args[]){

            lianxiti xx=new lianxiti();
            xx.sortTest();


        }
}

代码如上,总有一个返回空值,谁能帮忙解释下,顺便看看好的代码

写回答 关注

2回答

  • 慕标407132
    2018-11-27 17:15:11
    random.nextInt(11)产生的值可能为0.
    for(int i=0;i<0;i++){}是不会进入循环的,所以在最后返回的字符串是空的。
    我用的是下面的方法:
    
    	
    		


    慕标4071...

    Random le=new Random(); int length=0; do{ length=le.nextInt(10); }while(length==0);

    2018-11-27 17:17:19

    共 1 条回复 >

  • 慕用7075395
    2018-11-22 23:50:35
    public int nextInt(int n)
    • 返回:

    • 下一个伪随机数,在此随机数生成器序列中 0(包括)和 n(不包括)之间均匀分布的 int 值。

    以上是API文档-------------------------------------------

    for(int i=0;i<;i++){
       /62代表62个字符中随机生成
       sb.append(allString.charAt(random.nextInt(62)));
    
    }
    return sb.toString();
    random.nextInt(11)

    如果返回0,则不进入for循环,直接就return sb.toString()了

    慕用7075...

    额,for循环里的是i< random.nextInt(11),按成剪切了

    2018-11-22 23:52:16

    共 1 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题