Java 随机生成验证码并验证
功能简介
验证码字符集
验证码字符一般都是在09,az,A~Z 共62个字符中随机生成n个字符,且允许错三次。
所以可以创建一个集合(codes)。
private int counter = 3; //允许错误的次数
private int index; //code数组下标,初始值为0
private char[] codes = new char[62]; //ASCII码
{
//将0~9字符加入数组
for (int i = 48; i <= 57; i++) {
codes[index++] = (char) i;
}
//将a~z字符加入数组
for (int i = 65; i <= 90; i++) {
codes[index++] = (char) i;
}
//将A~Z字符加入数组
for (int i = 97; i <= 122; i++) {
codes[index++] = (char) i;
}
}
随机获取字符
用程序控制随机产生的验证码的个数。
使用Random类与for循环叠加使用,将随机抽出的集合codes中的元素构成一个新的字符串。
public String genCode(int n) { //n控制输出的验证码字符个数
String code = “”; //用来存法生成的验证码
Random r = new Random();
for (int i = 0; i < n; i++) {
int pos = r.nextInt(codes.length); //随机获取数组下标
char c = codes[pos]; //通过数组下标获取元素
code += c;
}
return code; //生成验证码
}
验证码输入
用Scanner类获取控制台输入,获取输入的类型为String类型的字符串,使用equalsIgnoreCase方法判定输入的字符串与随机获得的字符串是否相等,如果相等,输出成功并结束程序,如果不相等,输出失败并重新调用验证码输入方法,将可错误次数减1。
public void validator(String gencode) {
System.out.println(“请输入验证码:”);
Scanner sc = new Scanner(System.in);
String inputCode = sc.nextLine();
if (!inputCode.equalsIgnoreCase(gencode)) { //比较两个字符串是否相等,不区分大小写
counter --;
if (counter == 0) {
System.out.println(“错误次数已达上限”);
return;
}
System.out.println(“错误,还剩”+ counter+“次机会”);
validator(gencode);
return;
} else {
System.out.println(“成功”);
}
}
测试与结果
调用主函数开始测试
public void start() {
String realCode = genCode(4); //此处设置验证码位数为4
System.out.println(“验证码:”+realCode); //输出随机产生的验证码
validator(realCode); //将验证码与即将输入的字符串比较
}
public static void main(String[] args) {
new Exp02().start(); //启动程序
}

本文介绍了一种在Java中生成验证码的方法,包括创建字符集、随机生成验证码以及验证用户输入的功能。通过使用Random类和Scanner类,实现了允许用户有三次错误尝试的验证码系统。
781

被折叠的 条评论
为什么被折叠?



