验证码(按 ASCII 表强制转换为 char)
4位随机验证码,可以是数字或大小写字母;
方法1
随机数确定类型,再通过随机数获得相应的随机数;
import java.util.Random;
public class test {
public static void main(String[] args) {
//GUI ---> picture
Random r = new Random();
for (int i = 0; i < 4; i++) {
int kind = r.nextInt(3);//bound:参数名称提示
switch (kind) {
case 0:
//0~9
int number = r.nextInt(10);
System.out.print(number);
break;
case 1:
//A~Z: 65~90
int upper = r.nextInt(26) + 65;
System.out.print((char) upper);
break;
case 2:
//91~96: [ \ ] ^ _ `
//a~z: 97~122
int lower = r.nextInt(26) + 97;
System.out.print((char) lower);
break;
}
}
}
}
方法2
先把所有满足条件的元素放到集合内,再获取随机数;
import java.util.ArrayList;
import java.util.Random;
public class test {
static String verificationCode() {
ArrayList<Character> list = new ArrayList<>();
//放字符0-9
for (char c = '0'; c <= '9'; c++) {
list.add(c);
}
//放字符a-z
for (char c = 'a'; c <= 'z'; c++) {
list.add(c);
}
//放字符A-Z
for (char c = 'A'; c <= 'Z'; c++) {
list.add(c);
}
Random r = new Random();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 4; i++) {
int index = r.nextInt(list.size());
//使用get方法获取
char c = list.get(index);
sb.append(c);
}
return sb.toString();
}
public static void main(String[] args) {
//正常编译中尽量少些链式编程,多些注释
String code = verificationCode();
System.out.println(code);
}
}