public class Exp02 {
/**声明字符数组用于存储所有的验证码种子*/
private char[] codes = new char[62];
/**验证码种子数组的索引*/
private int index;
/**验证允许错误次数*/
private int counter = 3;
{
//将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;
}
}
/**
* 生成n位的验证码
* @param n
* @return
*/
public String genCode(int 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;
}
/**
* 验证输入
*/
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;
}
System.out.println("验证通过!");
}
/**
* 开始
*/
public void start() {
//生成验证码
String realCode = genCode(4);
System.out.println("验证码:"+realCode);
//验证
validator(realCode);
}
/*主方法/
public static void main(String[] args) {
new Exp02().start();
}
}