慕斯3232782
2017-05-07 16:48
package xuanke;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class RandString {
List<String> randStr = new ArrayList<>();
public void getRandStr(){
String n = "abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random = new Random();
for(int i =0;i<10;i++){
int j =0;
StringBuffer sb = new StringBuffer();
for(int k = random.nextInt(10);j<k;){
// 就是这里↓ 明明处理了随机到0的情况,但是还是会出现空字符串
if(k==0){
continue;
}else{
int a = random.nextInt(n.length()-1);
sb.append(n.charAt(a));
j++;
}
}
randStr.add(sb.toString());
}
}
public void forEcheGetRandStr(){
for (String string : randStr) {
System.out.println(string);
}
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
RandString rs = new RandString();
rs.getRandStr();
rs.forEcheGetRandStr();
}
}
因为在你的循环中。你判断了K==0的情况,但是你用的是continue,仅仅只是跳过了生成字符串这一个for循环,但是你要考虑到因为k=0,这次生成字符串是空的,你必须要跳到最外层:i这一层。必须让i--,重新生成字符串。
random.nextInt(10)+1; 23333不晓得这样算不算解决办法
Java入门第三季
409775 学习 · 4546 问题
相似问题