生成一个验证码
思路:验证码一般包括数字和字母。数字和字母之间可以用ASCLL值进行转换,所以数字的范围是6590或97122。
public static void main(String[]args){
for(int i=0;i<4;i++){
int n=(int)(Math.random()*(91-65))+65;
char m=(char)n;
System.out.print(m);
}
}
运行结果:DEHV
如果是生成一个六位的验证码,且有数字和字母,则我们可以规定生成2个数字,4个字母,将数字随机的插入字母中。
public static void main(String[] args) {
String result = "";
char a[] = new char[4]; // 存储4个字母
// 随机生成四个大写字母
for (int i = 0; i < 4; i++) {
int n = (int) (Math.random() * (91 - 65)) + 65; // 65到90对应字母A-Z
char m = (char) n;
result += m; // 将字母添加到结果中
a[i] = m; // 存储字母到数组
}
// 随机生成两个数字
int b1 = (int) (Math.random() * 10); // 第一个数字
int b2 = (int) (Math.random() * 10); // 第二个数字
// 随机选择字母和数字的插入位置
int a1 = (int) (Math.random() * 5); // 随机选择0到4的位置插入第一个数字
// 将第一个数字插入到指定位置
StringBuilder sb = new StringBuilder(result);
sb.insert(a1, b1); // 插入第一个数字
// 重新计算第二个数字的插入位置
// 在0到5的范围内,确保第二个数字插入的位置不与第一个数字重叠
int a2;
do {
a2 = (int) (Math.random() * 6); // 随机选择0到5的位置插入第二个数字
} while (a2 == a1); // 确保不与第一个数字重叠
// 如果第二个数字的插入位置在第一个数字后面,则需要调整位置
if (a2 > a1) {
a2++; // 向后移动位置
}
// 将第二个数字插入到指定位置
sb.insert(a2, b2); // 插入第二个数字
// 输出生成的验证码
System.out.println("生成的验证码是: " + sb.toString());
}
运行结果:
生成的验证码是: XK0T8E
浙公网安备 33010602011771号