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

为什么返回的总不对

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


        }
}

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

提问者:慕姐4925769 2018-11-22 17:41

个回答

  • 慕标407132
    2018-11-27 17:15:11

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


  • 慕用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()了