Java案例----生成随机验证码

在登录中常常会需要用到验证码,那你知道如何生成随机的验证码码?

本次的需求是生成一个由字母和数字组成的验证码,其中字母可以大小写或者重复需占4为大小,数字为0-9中的任意一个,只占1位大小,但是数字的位置可以任何位置,主要思路就是将需要用到的元素存入数组当中,其次运用随机生成数的方式生成随机索引,在对应的数组中获得对应的数据,最后再将数据进行拼接,就可以得到我们需求的验证码了!具体实现如下:

1:生成52个字母,将其存入一个集合当中

public static char[] createAlpha(){
        char[] arr = new char[52];
        for (int i = 0; i < arr.length; i++) {
//当i小于26时,插入a-z
            if(i<26){
                arr[i] = (char)('a' + i);
            }
//当i大于26时,插入A-Z
            else
                arr[i] = (char)('A'+ i -26);
        }
        return arr;
    }

2.生成随机的数字 

 public static int createNum(){
//random的规则:包头不包尾,生成0-9的数字
        int x = r.nextInt(10);
        return x;
    }

3.生成随机索引,将上诉生成的数据进行拼接

    public static String createVatifaction(char[]arr,int num){
        String str = "";
        for (int i = 0; i < 4; i++) {
            int index = r.nextInt(arr.length);
            str += arr[index];
        }
        str += num;
        return str;
    }

4.因为数字能够为任何位置,所以定义一个打乱字符串的方法

public static String toRandom(String str){
        char[]arr = str.toCharArray();
        for (int i = 0; i < arr.length; i++) {
            char temp = ' ';
            int index = r.nextInt(arr.length);
            temp = arr[i];
            arr[i] = arr[index];
            arr[index] = temp;
        }
//        for (int i = 0; i < arr.length; i++) {
//            System.out.println(arr[i]);
//        }
        String newstr = new String(arr);
        return newstr;
    }

 5.编写测试类进行测试

 static Random r = new Random();
    public static void main(String[] args) {
        char[]arr = createAlpha();
        int num = createNum();
        String str = createVatifaction(arr,num);
        str = toRandom(str);
        System.out.println(str);
    }

 最后输入的就为题目所要求的验证码了,效果图如下:

Java案例----生成随机验证码_第1张图片

完整代码如下:

import java.util.Random;
public class vatifyCreate {
    static Random r = new Random();
    public static void main(String[] args) {
        char[]arr = createAlpha();
        int num = createNum();
        String str = createVatifaction(arr,num);
        str = toRandom(str);
        System.out.println(str);
    }
    public static char[] createAlpha(){
        char[] arr = new char[52];
        for (int i = 0; i < arr.length; i++) {
            if(i<26){
                arr[i] = (char)('a' + i);
            }
            else
                arr[i] = (char)('A'+ i -26);
        }
        return arr;
    }
    public static int createNum(){
        int x = r.nextInt(10);
        return x;
    }
    public static String createVatifaction(char[]arr,int num){
        String str = "";
        for (int i = 0; i < 4; i++) {
            int index = r.nextInt(arr.length);
            str += arr[index];
        }
        str += num;
        return str;
    }
    public static String toRandom(String str){
        char[]arr = str.toCharArray();
        for (int i = 0; i < arr.length; i++) {
            char temp = ' ';
            int index = r.nextInt(arr.length);
            temp = arr[i];
            arr[i] = arr[index];
            arr[index] = temp;
        }
//        for (int i = 0; i < arr.length; i++) {
//            System.out.println(arr[i]);
//        }
        String newstr = new String(arr);
        return newstr;
    }
}

你可能感兴趣的:(算法,数据结构,java,eclipse,intellij-idea)