方法一 数字+小写字母 4/6位
UUID.randomUUID().toString().replaceAll("-","").subString(0,4);
要六位就0~6
方法二 全数字4/6位
第一种
public static void main(String[] args) {
// 方法1
StringBuilder builder = new StringBuilder();
Random random = new Random();
for (int i = 0; i < 6; i++) {
builder.append(random.nextInt(10));
}
return builder.toString();
}
第二种
public static void main(String[] args) {
// 方法2 不太安全,可能出现126391.44721067968这样的
String verifyCode
= String. valueOf ((int) (Math.random () *900000 + 100000));
System.out.println (verifyCode) ;
}
方法三 随机4/6位 数字+字母(包括大小写)
//定义一个生成随机四位验证码的方法
public static String hello() {
//定义一个字符数组,存放大小写字母以及0-9数字
char[] ch = new char[62];
int index = 0;
//存放0-9
for(int i = 48;i<=57;i++) {
ch[index] = (char)(i);
index++;
}
//存放大写字母
for(int i = 65;i<=90;i++) {
ch[index] = (char)(i);
index++;
}
//存放小写字母
for(int i = 97;i<=122;i++) {
ch[index] = (char)(i);
index++;
}
//定义一个空字符串,用于拼接随机字符
String str ="";
//生成四个随机字符(如果要造6位就把4改成6就好了)
for(int i = 0; i < 4 ;i++) {
char c = ch[new Random().nextInt(ch.length)];
str = str + c;
}
//返回随机字符串
return str;
}
}
其他
四位数的验证码(带zip源码)
JAVA生成四位数的验证码_weixin_34015336的博客-CSDN博客
四位数验证码图画
java生成四位数字验证码_简单的随机生成4个数字验证码的实现_矢锋的博客-CSDN博客
关于文中用到的方法
random.nextInt()
// 会随机生成一个整数,这个整数的范围就是int类型的
// 范围在-2^31 ~ 2^31-1,但是如果在nextInt()括号中加入一个整数a,
// 那么这个随机生成的随机数范围就变成[0,a)。
Random的nextInt()用法_rothschildlhl的博客-CSDN博客_nextint()
已删除的方法
public static void main(String[] args) {
Long codeL= System.nanoTime();
String codeStr = Long.toString(codeL);
String verifyCode1
= codeStr.substring(codeStr.length() - 6);
// 由于一共有16位,那么substring(10)就是从第10位开始数到最后,
// 那就是取索引10 11 12 13 14 15上的一共六位数字刚好
System.out.println(verifyCode1);
}
不再使用的理由 : 问题是产生的随机结果带很多个0, 比如780000 131700这样的 , 243200 ,也试过codeStr.substring(4,codeStr.length()-6);这样 但是会导致结果很僵硬,可能获取好几次验证码只有一个数字的差别甚至毫无差别,不太好