Java 随机生成验证码生并验证

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

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(); //启动程序
}

验证码测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值