Java数字、小写字母、大写字母混合验证码
思路:将其封装成一个静态类中的静态方法,调用方便。
方法实现:定义一个4位的字符类型的数组,利用for循环四次生成四位数字或者字母,在循环内部,利用数学函数Math.random()*58生成一个0-58之间的数字(包含0不包含58),再利用Math.floor()向下取整,获得0-57的整数,因为ascll码对照表60-90为26个大写字母,97-112为26个小写字母,所以将取到的整数再加上58,它的范围就变成了65-112,而由于大于90小于97的数字在ascll对照表上面对应的不是数字,所以如果取到这几个数字,就再次取0-9之间的整数,这样就做到了数字字母混合的四位验证码。
封装类
public class YZM {
public static String getyzm(){
char[] arrays = new char[4];
for (int i = 0; i < 4; i++) {
int num = (int)Math.floor(Math.random()*58)+65;
if (num>90&&num<97) {
num=(int)Math.floor(Math.random()*10);
arrays[i]=Integer.toString(num).charAt(0);
continue;
}
arrays[i]=(char)num;
}
return new String(arrays);
}
}
测试代码
public class Test {
public static void main(String[] args) {
System.out.println(YZM.getyzm());
}
}
运行结果
注意
:如果不想要数字,可以将if里面的
num=(int)Math.floor(Math.random()*10);
arrays[i]=Integer.toString(num).charAt(0);
替换为
i --