本周内学习了Java中的Random类,需要写一个验证码,通过Random来获得一个伪随机的验证码,并通过控制台输入来比较验证码是否一致。
代码如下:
import java.util.Random;
import java.util.Scanner;
/**
* 四位验证码 包含数字,字母不区分大小写。
*/
public class RandomDemo {
Scanner sc = new Scanner(System.in);
Random random = new Random();
/**
* 获取验证码
*
* @return
*/
public String getCode() {
// 存放验证码
String str = "";
// 定义长度为4的char类型数组分别存放4位验证码中的一个
char[] c = new char[4];
// 4位验证码获取
for (int i = 0; i < c.length; i++) {
// 使用随机数让大小写字母和数字随机获取
int a = random.nextInt(3);
if (a < 1) {
// 大写字母A~B(ASCII码65-90)
c[i] = (char) (random.nextInt(26) + 65);
} else if (a >= 1 && a < 2) {
// 数字0~9(ASCII码48-57)
c[i] = (char) (random.nextInt(10) + 48);
} else if (a >= 2 && a < 3) {
// 小写字母a~z(ASCII码97-122)
c[i] = (char) (random.nextInt(26) + 97);
}
}
// 字符串拼接
for (int i = 0; i < c.length; i++) {
str = str + c[i];
}
return str;
}
/**
* 验证码比较
*/
public void campare() {
String code = getCode();
System.out.println("验证码为:" + code);
System.out.println("请输入验证码:");
String s = sc.nextLine();
/*
* String类的equalsIgnoreCase(String anotherString)方法, 将此 String
* 与另一个String 比较,不考虑大小写,并返回一个boolean类型。
*/
if (code.equalsIgnoreCase(s)) {
System.out.println("验证码输入正确!");
}
}
public static void main(String[] args) {
new RandomDemo().campare();
}
}
上面的代码中,运用到了本人本周所学的诸如String类和Random类中的一部分。可能还有更好的方式,限于本人水平有限,暂且如此。。。