import java.util.Random;
import java.util.Scanner;
/*
* 验证码案例。
*
* 分析:
* 1. 定义一个长度为36的数组,将所有的大写字母、数字全都放进去。
* 如果使用动态初始化,可以。new char[36]
* 如果使用静态初始化,也可以。{ 'A', 'B', 'C', ...}
* 2. 需要使用随机数字,就创建一个Random
* 3. 生成一个随机数字,范围:0-35。r.nextInt(array.length);随机数字要当做索引使用。
* 4. 根据随机数字,当做索引,取出对应的一个char字符。(总共需要4个)
* 5. 将四个字符拼接成为一个字符串:StringBuilder
* 6. 打印一下这个验证码(显示出来)
* 7. 键盘输入,所以创建Scanner,sc.next()
* 8. 判断一下(if)输入的字符串,和验证码字符串,是否一样(忽略大小写):equalsIgnoreCase
* 9. 如果一样,提示成功;如果不一样,提示验证失败。
*/
public class Demo01ValidCode {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
String validCode = getValidCode();
System.out.println("验证码:" + validCode);
System.out.println("请输入:");
String inputCode = sc.next();
// 判断一下inputCode和validCode二者是否一样(忽略大小写)
if (inputCode.equalsIgnoreCase(validCode)) {
System.out.println("验证成功!");
break; // 退出while循环,不用重试
} else {
System.out.println("验证失败!");
}
} // while
}
public static String getValidCode() {
char[] dict = getDict();
// 随机数就用Random
Random r = new Random();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 4; i++) {
int index = r.nextInt(dict.length); // 0-35
char ch = dict[index]; // 随机的一个字符
sb.append(ch);
}
String validCode = sb.toString();
return validCode;
}
public static char[] getDict() {
// 定义一个数组,确定随机字符的范围
// char[] dict = { 'A', 'B', 'C', }; // 可以使用静态初始化
// 也可以使用动态初始化
char[] dict = new char[36]; // 26个字母和10个数字
for (int i = 0; i < 26; i++) {
dict[i] = (char) ('A' + i);
}
for (int i = 0; i < 10; i++) {
dict[i + 26] = (char) ('0' + i);
}
return dict;
}
}
验证码案例(一)
最新推荐文章于 2022-10-29 20:35:19 发布