验证码由26个小写英文字母、26个大写英文字母和数字0-9组成的五位数。
1.首先创建一个集合ArrayList<String> 把52个英文字母放入集合中
2.再利用Random类通过集合中的随机索引获取4个字母拼接成字母串
3.再利用Random类在数字0-9中随机一个数字拼接到字符串后面
4.把字符串变成字符数组,在字符数组中生成一个随机索引,再拿着4索引上的数字跟随机索引上的数字进行交换。
5.把字符数组再变回字符串
public static String getCode(){
//创建集合
ArrayList<String> list=new ArrayList<>();
//添加字母
for(int i=0;i<26;i++){
list.add((char) 'a'+i);//a-z
list.add((char) 'A'+i);//A-Z
}
//生成4个随机字母
String result="";
Random r=new Random();
for(int i=0;i<4;i++){
//获取随机索引
int randomIndex =r.nextInt(list.size());
char c=list.get(randomIndex);
result=result+c;
}
//在字符串后面添加一个随机数字0-9
int number=r.nextInt(10);
result=result+number;
//把字符串变成字符数组
char[] chars=result.toCharArray();
//在字符数组中生成一个随机索引,然后拿着4索引上的数字跟随机索引进行交换
int index=r.nextInt(chars.length);
char temp=chars[4];
chars[4]=chars[index];
chars[index]=temp;
//把字符数组再变成字符串
String code=new String(chars);//直接将字符数组作为参数构造String对象;
return code;
}