需求
利用JAVA编写一个程序,该程序实现随机生成一个10位以内的随机验证码,随机验证码由阿拉伯数字、大写字母、小写字母组成。
需求分析
构造一个方法以提高程序复用率。定义该方法返回值类型为String类,形参列表传入验证码的长度。在方法中利用一个For循环根据验证码的长度来控制,验证码生成方面,在For循环中随机生成一个0-3范围内的数,利用一个Switch语句创造三个分支,0代表随机生成大写字母,1代表随机生成小写字母,2代表随机生成阿拉伯数字。在三个分支内又通过随机方法生成大写字母、小写字母或阿拉伯数字,再利用一个String变量存储生成的随机验证码,最后循环结束后返回String变量中的值,其即为最终随机生成的验证码。
在主方法中,同样采用一个随机方法生成验证码的长度,再调用方法实现随机生成验证码,最后将其输出完成,这样就保证了验证码从长度到验证码的各个构成均为随机。
代码实现
package ljh.mask.Example20220720;
import java.util.Random;
//import java.util.Scanner;
public class code {
public static void main(String[] args) {
//需求:定义方法实现随机产生一个5位的验证码,每位可能是数字、大写字母、小写字母
Random r = new Random();
int n = r.nextInt(10) + 1;
String code = CreatCode(n);
System.out.println("您的验证码为:" + " " + code);
}
public static String CreatCode(int n){
Random r = new Random();
String code = "";
for (int i = 0; i < n; i++) {
int type = r.nextInt(3);
switch (type){
case 0:
char ch = (char) (r.nextInt(26) + 65);
code += ch;
break;
case 1:
char sh = (char) (r.nextInt(26) + 97);
code += sh;
break;
case 2:
code += r.nextInt(10);
break;
}
}
return code;
}
}
要想实现此需求还有第二种写法,可以采用String类中的方法来实现。
首先创建一个String字符串将所有的大写字母、小写字母及0-9之间的数字全部存入其中,然后利用随机数方法随机出一个索引值(范围为String字符串的长度),再以该索引值为参数使用String类中的charAT方法,因为该方法的功能是获取某个索引位置出的字符,而具体获取哪个索引位置的字符是由Random方法随机出来的,这就达成了随机字符的目的,再定义一个字符串将随机出来的每个字符存入其中,再将其列入循环,最后将字符串输出就是随机生成的验证码了。
来看下具体代码实现
package ljh.mask.YZM;
import java.util.Random;
public class code {
public static void main(String[] args) {
//随机生成一个5位的由大写字母、小写字母、0-9之间的数字组成的验证码
//用string类来做
String Readycode = "abcdefghijklmnopqrstuvwxyzQWERTYUIOPASDFGHJKLZXCVBNM0123456789";
Random r = new Random();
int n = r.nextInt(10) + 1;
String code = "";
int Index;
for (int i = 0; i <= n; i++) {
Index = r.nextInt(63);
code += Readycode.charAt(Index);
}
System.out.println(code);
}
}