生成验证码
内容:可以是小写字母,也可以是大写字母,还可以是数字
规则:长度为5,内容是四位字母,一位数字,其中数字只有1位,但是可以出现在任意位置
public static void main(String[] args) {
//创建含有大小写字母的数组
char[] letterArr = new char[52];
//小写字母在ASCII码表里是从97开始的,大写字母是65开始的
for (int i = 0; i < letterArr.length; i++) {
if(i <= 25){
letterArr[i] = (char)(97 + i);
}else{
letterArr[i] = (char)(65 + i - 26);
}
}
String result = randomArr(letterArr);
System.out.println(result);
}
//生成随机验证码
public static String randomArr(char[] arr){
//定义一个新的空字符数组,存放五位随机字母
char[] result = new char[5];
Random r = new Random();
for (int i = 0; i < result.length; i++) {
int randomIndex = r.nextInt(arr.length);
//遍历新随机字母数组,判断新随机字母在数组中是否存在
for (int i1 = 0; i1 < result.length; i1++) {
//若不存在,则存入数组
if(result[i1] != arr[randomIndex]){
result[i] = arr[randomIndex];
}
}
}
String str = randomNum(result);
return str;
}
//数字随机出现
public static String randomNum(char[] arr){
Random r = new Random();
int randomIndex = r.nextInt(arr.length);
//在已经完成的五位随机字母数组中,将其中随机索引的一个字母替换成数字
//在ASCII码表中,数字0是从48开始的
int ranNum = r.nextInt(10) + 48;
//通过强转,直接赋给随机索引的位置
arr[randomIndex] = (char)ranNum;
return new String(arr);
}
标签:23,--,text,验证码,char,小写字母,letterArr
From: https://www.cnblogs.com/Zz1001/p/17309050.html