优先选择,Hutool的RandomUtil工具:https://www.hutool.cn/docs/#/core/%E5%B7%A5%E5%85%B7%E7%B1%BB/%E9%9A%8F%E6%9C%BA%E5%B7%A5%E5%85%B7-RandomUtil
String s = RandomUtil.randomNumbers(10);
账号生成
2024年1月10日由GPT4检验,后续无需再更改。
import java.util.Random;
/**
* 账号生成器
*/
public class AccountGenerator {
// 纯数字
private final static String[] allnumcode = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
private static Random random = new Random();
/**
* 生成号码
*
* @param digit 位数
* @return
*/
public static String numGenerator(Integer digit) {
while (true) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < digit; i++) {
sb.append(allnumcode[random.nextInt(allnumcode.length)]); // 随机从数字池一共是10位中拼接一位
}
String number = sb.toString();
// 检查位数是否足够
if (number.length() < digit) {
continue;
}
// 检查是否为豹子号或顺子号
if (!CheckLineNumber(number, 4) || !CheckShunziNumber(number, 4)) {
continue;
}
return number;
}
}
/**
* 豹子号_检查
*
* @param number 号码
* @param digit 连续相同位数
* @return
*/
public static boolean CheckLineNumber(String number, Integer digit) {
char[] chars = number.toCharArray();
int status = 1;
for (int i = 0; i < chars.length - 1; i++) {
if (chars[i] == chars[i + 1]) {
status += 1;
if (status == digit) {
/*System.out.println(number);
System.out.println("此号是连号!");*/
return false;
}
} else {
status = 1;
}
}
return true;
}
/**
* 顺子号_检验
*
* @param number 号码
* @param digit 位数
* @return
*/
public static boolean CheckShunziNumber(String number, Integer digit) {
char[] chars = number.toCharArray();
int addstatus = 1;
int delstatus = 1;
for (int i = 0; i < chars.length - 1; i++) {
if (chars[i] + 1 == chars[i + 1]) {
addstatus += 1;
if (addstatus == digit) {
return false;
}
} else {
addstatus = 1;
}
if (chars[i] - 1 == chars[i + 1]) {
delstatus += 1;
if (delstatus == digit) {
return false;
}
} else {
delstatus = 1;
}
}
return true;
}
/**
* 测试
*
* @param args
*/
public static void main(String[] args) {
for (int i = 0; i < 10; i++) { // 仅为了测试,我们生成10个账号
System.out.println(AccountGenerator.numGenerator(8)); // 生成8位数的账号
}
}
}
验证码纯文本生成器
import java.util.Random;
/**
* @author : zanglikun
* @date : 2021/2/1 11:03
* @Version: 1.0
* @Desc :验证码工具类,支持纯数字、纯字母、混合型验证码
*/
public class CheckCodeUtil {
// 纯数字
private final static String[] allnumcode = "0,1,2,3,4,5,6,7,8,9".split(",");
// 纯小写字母
private final static String[] allcharcode = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z".split(",");
// 大小写字母 数字 混合型
private final static String[] allcode = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,0,1,2,3,4,5,6,7,8,9".split(",");
private static Random random = new Random();
// 输入验证码长度 生成纯数字验证码
public static String generateNumericCode(int num) {
return generateCode(allnumcode, num);
}
// 输入验证码长度 生成纯小写字母验证码
public static String generateLowercaseCharCode(int num) {
return generateCode(allcharcode, num);
}
// 输入验证码长度 生成混合型字母验证码
public static String generateMixedCode(int num) {
return generateCode(allcode, num);
}
// 生成验证码的通用方法
private static String generateCode(String[] codeElements, int num) {
StringBuilder code = new StringBuilder(num);
for (int i = 0; i < num; i++) {
code.append(codeElements[random.nextInt(codeElements.length)]);
}
return code.toString();
}
/**
* 测试 验证码
*
* @param args
*/
public static void main(String[] args) {
System.out.println(generateNumericCode(6));
System.out.println(generateLowercaseCharCode(6));
System.out.println(generateMixedCode(6));
}
}
特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤