23.text--生成验证码

生成验证码

内容:可以是小写字母,也可以是大写字母,还可以是数字
规则:长度为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);
}
posted on 2023-04-12 10:50  小黑确实不黑  阅读(20)  评论(0编辑  收藏  举报