日常生活中,我们很容易看到验证码,它们可以是纯数字,也可能是纯字母,还有的大多数应该为字母和数字混合。
然后我想着,能够写一个程序,随机生成5位的验证码,且满足前4位为大小写混合出现的字母,最后一位为数字,而且把这个随机生成验证码定义为一个方法,要生成的时候直接调用。
import java.util.Random;
//要求是生成5位验证码,前4位随机大小写,后一位为一位随机数字。
public class Yanzhengma {
public static void main(String[] args) {
System.out.println("随机生成的验证码为:");
Yanzhengma();
}
public static void Yanzhengma(){
Random r=new Random();
int[]arr=new int[5];//定义一个长度为5的数组来存数据
int c= r.nextInt(3)+1; //随机出范围为1-3的数,作为循环的范围,这个范围即出现大写字母的范围
for (int i = 0; i < c; i++) {
int a= r.nextInt(26)+65; //查表可知,大写字母在ascll码中对应的十进制范围(65-90)
arr[i]=a;
}
for (int k=(c+1);k<4;k++){ //从随机出的大写字母范围后,到索引为4之前就是小写字母的范围
int d=r.nextInt(26)+97;//查表可知,小写字母在ascll码中对应的十进制范围(97-122)
arr[k]=d;
}
int e= r.nextInt(9);
arr[4]=e;
for (int j = 0; j < 4; j++) {
System.out.print((char)arr[j]); //遍历数组,并在输出时强制转换数据类型为char。
}
System.out.println(arr[4]);
}
}
但是后来我发现,这样生成的验证码只有是大写连续出现,然后到小写,没有办法做到大小写交替出现,后面我就修改了一下,下面是完全符合要求的程序了
import java.util.Random;
public class Yanzhengma_puls {
public static void main(String[] args) {
Random r=new Random();
char []arr=new char[52];
for (int i = 0; i < 26; i++) {
arr[i]=(char) (i+65);
}
int j=97;
for (int i = 26; i < arr.length; i++) {
arr[i]=(char)j;
j++;
}
for (int i=0;i<=3;i++){
int a= r.nextInt(52);
System.out.print(arr[a]);
}
int b= r.nextInt(9);
System.out.println(b);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/79502.html