请从26个英文字母(大小写都包含),以及数字0-9中,随机产生一个5位的字符串验证码并打印在控制台
效果:uYq8I,3r4Zj
代码:
public class RandomDemo2 {
public static void main(String[] args) {
//动态初始化数组
char[] arr = new char[26 + 26 + 10];
//初始化数组
initData(arr);
String s = getRandomString(arr);
checkCode(s);
}
// 此方法用于输入验证码并判断
public static void checkCode(String s) {
//输入并判断
System.out.println("请输入验证码:");
Scanner sc = new Scanner(System.in);
String inputString = sc.next();
if (inputString.equals(s)){
System.out.println("对的");
}
}
// 此方法用于随机产生一个5位的字符串验证码
public static String getRandomString(char[] arr) {
//产生随机数
Random r = new Random();
//随机产生一个5位的字符串
String s = "";
for (int i = 0; i < 5; i++) {
int num = r.nextInt(arr.length);
s += arr[num];
}
System.out.println(s);
return s;
}
/**
* 此方法用于初始化数组,内容为a~z A~Z 0~9
*/
public static void initData(char[] arr) {
//填充数组,用a~z A~Z 0~9
int index = 0;
//a~z
for (char c = 'a'; c <= 'z'; c++) {
arr[index] = c;
index++;
}
//A~z
for (char c = 'A'; c <= 'Z'; c++) {
arr[index] = c;
index++;
}
for (char c = '0'; c <= '9'; c++) {
arr[index] = c;
index++;
}
// 细节:println(char[]),打印字符数组,在源代码中,println()会自动遍历数组,故直接打印内容
// System.out.println(arr);
}
}