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