import java.util.Random;
public class Test3 {
public static void main(String[] args) {
//动态定义一个长度为5的字符数组
char[] ch = new char[5];
String s = getStr(ch);
System.out.println("s: " + s);
}
public static String getStr(char[] ch) {
//用来记录数组中存储数字的次数
int count1 = 0;
//用来记录数组中存储字母的次数
int count2 = 0;
Random r = new Random();
for (int i = 0; i < ch.length; i++) {
//生成一个48-90的随机数
int num = r.nextInt(43) + 48;
//判断生成的随机数是否在'0'-'9'范围内,如果在此范围之内将次数存入字符数组中
//如果数组中存入了一个数,count1自增后,将不会进入此if语句
if (num >= 48 && num <= 57 && count1 == 0) {
ch[i] = (char) num;
count1++;
} else if (num >= 65 && num <= 90 && count2 < 4) { //判断生成的随机数是否在'A'-'Z'范围内,如果在此范围之内将次数存入字符数组中
ch[i] = (char) num; //如果数组中存入了四个字母,count2自增4次后,将不会进入此if语句
count2++;
} else { //如果生成的随机数不在'A'-'Z'和'0'-'9',重新生成此索引位置的随机值
i--;
}
}
StringBuilder sb = new StringBuilder();
.//遍历生成的字符数组,用StringBuilde对象进行字符拼接
for (int i = 0; i < ch.length; i++) {
sb.append(ch[i]).append(" ");
}
//将StringBuider对象转为String对象
String s = sb.toString();
return s;
}
}
运行结果:
方法不唯一,如有其它方法欢迎分享交流!!