生成一个验证码

思路:验证码一般包括数字和字母。数字和字母之间可以用ASCLL值进行转换,所以数字的范围是6590或97122。

 public static void main(String[]args){
        for(int i=0;i<4;i++){
            int n=(int)(Math.random()*(91-65))+65;
            char m=(char)n;
            System.out.print(m);
        }
    }

运行结果:DEHV
如果是生成一个六位的验证码,且有数字和字母,则我们可以规定生成2个数字,4个字母,将数字随机的插入字母中。

 public static void main(String[] args) {
        String result = "";
        char a[] = new char[4]; // 存储4个字母

        // 随机生成四个大写字母
        for (int i = 0; i < 4; i++) {
            int n = (int) (Math.random() * (91 - 65)) + 65; // 65到90对应字母A-Z
            char m = (char) n;
            result += m; // 将字母添加到结果中
            a[i] = m; // 存储字母到数组
        }

        // 随机生成两个数字
        int b1 = (int) (Math.random() * 10); // 第一个数字
        int b2 = (int) (Math.random() * 10); // 第二个数字

        // 随机选择字母和数字的插入位置
        int a1 = (int) (Math.random() * 5); // 随机选择0到4的位置插入第一个数字

        // 将第一个数字插入到指定位置
        StringBuilder sb = new StringBuilder(result);
        sb.insert(a1, b1); // 插入第一个数字

        // 重新计算第二个数字的插入位置
        // 在0到5的范围内,确保第二个数字插入的位置不与第一个数字重叠
        int a2;
        do {
            a2 = (int) (Math.random() * 6); // 随机选择0到5的位置插入第二个数字
        } while (a2 == a1); // 确保不与第一个数字重叠

        // 如果第二个数字的插入位置在第一个数字后面,则需要调整位置
        if (a2 > a1) {
            a2++; // 向后移动位置
        }

        // 将第二个数字插入到指定位置
        sb.insert(a2, b2); // 插入第二个数字

        // 输出生成的验证码
        System.out.println("生成的验证码是: " + sb.toString());
    }

运行结果:
生成的验证码是: XK0T8E

posted @ 2024-09-25 22:56  呓语-MSHK  阅读(48)  评论(0)    收藏  举报