提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、需求
定义一个方法实现随机产生n位的验证码,每位可能是数字,大小写字母。
二、分析
1.定义个方法,生成验证码返回:方法参数是位数、方法的返回值是String。
2.在方法内部使用for循环生成指定位数的随机字符,并连接起来。
3.把连接好的随机字符串作为一组验证码进行返回。
三、代码
import java.util.Random;
import java.util.Scanner;
/**
* 验证码:
* 定义方法实现随机产生一个5位的验证码,每位可能是数字,大写字母,小写字母
*/
public class CaseDemo3 {
/**
* 分析:
* 1.定义个方法,生成验证码返回:方法参数是位数、方法的返回值是String
* 2.在方法内部使用for循环生成指定的位数的随机字符,并连接起来
* 3.把连接好的随机字符串作为一组验证码进行返回
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入验证码的位数:");
int n = sc.nextInt();
//4.调用获取验证码的方法获取验证码
String code = createCode(n);
System.out.println("随机验证码:"+code);
}
//1.定义一个方法返回一个随机验证码
public static String createCode(int n) {
Random r = new Random();
String code = "";
//2.定义一个for循环,循环n次,依次生成随机字符
for (int i = 0; i < n; i++) {
//3.生成一个随机字符:英文大小写、数字等 (0、1、2)
int type = r.nextInt(3);//type 取0,1,2 随机字符的类型 0是英文大写、1是英文小写、2是数字
switch (type) {
//英文大写 (A-65 to Z-65+25) (0-25)+65
case 0:
char ch = (char) (r.nextInt(26) + 65);
code += ch;
break;
//英文小写 (a-97 to z-97+25) (0-25)+97
case 1:
char ch1 = (char) (r.nextInt(26) + 97);
code += ch1;
break;
//数字
case 2:
code += r.nextInt(10);
break;
}
}
return code;
}
}
四、效果图
总结
1.定义一个String类型的变量存储验证码字符。
2.定义个for循环,需要产生的验证码的位数。
3.随机生成0|1|2的数据,依次代表当前位置要生成的是英文字母大写|小写|还是数字。
4.把0、1、2交给switch生成对应类型的随机字符,把字符交给String变量。
5.循环结束后,返回String类型的变量即是所求的验证码结果。