[Java] 验证码(按 ASCII 表强制转换为 char)


验证码(按 ASCII 表强制转换为 char)

4位随机验证码,可以是数字或大小写字母;

方法1

随机数确定类型,再通过随机数获得相应的随机数;

import java.util.Random;

public class test {
    public static void main(String[] args) {
        //GUI ---> picture
        Random r = new Random();
        for (int i = 0; i < 4; i++) {
            int kind = r.nextInt(3);//bound:参数名称提示
            switch (kind) {
                case 0:
                	//0~9
                    int number = r.nextInt(10);
                    System.out.print(number);
                    break;
                case 1:
                	//A~Z: 65~90
                    int upper = r.nextInt(26) + 65;
                    System.out.print((char) upper);
                    break;
                case 2:
                	//91~96: [ \ ] ^ _ ` 
                	//a~z: 97~122
                    int lower = r.nextInt(26) + 97;
                    System.out.print((char) lower);
                    break;
            }
        }
    }
}

方法2

先把所有满足条件的元素放到集合内,再获取随机数;

import java.util.ArrayList;
import java.util.Random;

public class test {
    static String verificationCode() {
        ArrayList<Character> list = new ArrayList<>();
        //放字符0-9
        for (char c = '0'; c <= '9'; c++) {
            list.add(c);
        }
        //放字符a-z
        for (char c = 'a'; c <= 'z'; c++) {
            list.add(c);
        }
        //放字符A-Z
        for (char c = 'A'; c <= 'Z'; c++) {
            list.add(c);
        }
        Random r = new Random();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 4; i++) {
            int index = r.nextInt(list.size());
            //使用get方法获取
            char c = list.get(index);
            sb.append(c);
        }
        return sb.toString();
    }

    public static void main(String[] args) {
        //正常编译中尽量少些链式编程,多些注释
        String code = verificationCode();
        System.out.println(code);
    }
}
发布了59 篇原创文章 · 获赞 60 · 访问量 1598

猜你喜欢

转载自blog.csdn.net/Regino/article/details/104503100