一、随机产生由四个小写字母构成的验证码
分析:
要想随机产生小写字母,需要用到Math.random(),但是其返回值是double,因此要将返回值强转为char类型。这里就需要查找ASCII码了,通过查找ASCII码可知,小写字母的取值范围是97-122(97+25).因此随机数的产生可写为Math.random()*26+97
要随机产生一个在m-n之间的数,规律为:Math.random()*(n-m+1)+m
从上述分析可知如何生成小写字母的整数范围,再将其强转为char类型,就可以得到一个char类型的数,接下来就可通过循环得到验证码。
方式一、使用数组存储
int times = 0;
char[] temp= new char[5];
while(times < 4) {
char rand = (char) (Math.random()*26+97);
temp[times] = rand;
times++;
}
System.out.println(temp);
方式二、不换行打印
int times = 0;
while(times < 4) {
char rand = (char) (Math.random()*26+97);
System.out.print(rand);
times++;
}
二、随机产生由四个大写字母构成的验证码
分析:
和小写字母大致思想一致,其中大写字母的ASCII码的范围为65-90
int i = 1;
while(i < 5) {
char rand = (char) (Math.random()*26+65);
System.out.print(rand);
i++;
}
System.out.println((97+25));
三、随机产生由四个大小写字母构成的验证码
分析:
因为大写字母和小写字母之间有91-96的符号,导致不连续,故需要将其排除掉(即,如果产生了符号,就重新生成,可以考虑使用死循环+break)
System.out.println();
int j = 1;
while(j < 5) {
int rand = (int) (Math.random()*58+65);
while(true) {
if (rand >= 91 && rand <= 96) {
rand = (int)(Math.random()*58+65);
}
System.out.print((char)rand);
break;
}
j++;
}