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(); } }
代码如上,总有一个返回空值,谁能帮忙解释下,顺便看看好的代码
random.nextInt(11)产生的值可能为0. for(int i=0;i<0;i++){}是不会进入循环的,所以在最后返回的字符串是空的。 我用的是下面的方法:
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()了