账号 & 验证码的生成代码
账号生成
代码语言:javascript复制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(10)]);
}
if (Integer.valueOf(sb.toString()) < 10000000) {
//System.out.println("位数过短 " sb.toString());
continue;
}
if (!CheckLineNumber(sb.toString(), 4) ||
!CheckShunziNumber(sb.toString(), 4)) {
//System.out.println("其他错误 " sb.toString());
continue;
}
return sb.toString();
}
}
/**
* 豹子号_检查
*
* @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;
boolean flag = false;
for (int i = 0; i < chars.length - 1; i ) {
if (chars[i] == chars[i 1] - 1) {
addstatus = 1;
if (delstatus == digit) {
/*System.out.println(number);
System.out.println("此号是加顺子号!");*/
return false;
}
} else if (chars[i] == chars[i 1] 1) {
delstatus = 1;
if (delstatus == digit) {
/*System.out.println(number);
System.out.println("此号是减顺子号!");*/
return false;
}
} else {
addstatus = 1;
delstatus = 1;
}
}
return true;
}
/**
* 测试
*
* @param args
*/
public static void main(String[] args) {
for (int i = 0; i < 100000; i ) {
System.out.println(AccountGenerator.numGenerator(7));
//AccountGenerator.numGenerator(8);
}
//CheckShunziNumber("7465789", 3);
}
}
验证码生成器
代码语言:javascript复制import java.util.Random;
/**
* @author : zanglikun
* @date : 2021/2/1 11:03
* @Version: 1.0
* @Desc : 验证码 不同位数、纯字母、纯数字生成。 有个缺点,有时间 进行修复 :每次 都是 new出来 Random对象 、String[]、StringBuilder对象 看看能不减少生成次数
*/
public class CheckCodeUtil {
// 纯数字
private final static String allnumcode = "0,1,2,3,4,5,6,7,8,9";
// 纯小写字母
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";
// 大小写字母 数字 混合型
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";
// 输入验证码长度 生成纯数字验证码
public static String allnumcode(int num){
StringBuilder code = new StringBuilder();
String[] split = allnumcode.split(",");
Random random = new Random();
//Math.random()方法 返回的是 [0,1) 区间范围的数 使用规则一般是 Math.random()*(Max - min) min 就可以达到[min,Max]的数了
for (int i = 0; i < num; i ) {
code.append(split[random.nextInt(split.length)]);
}
return code.toString();
}
// 输入验证码长度 生成纯小写字母验证码
public static String alllowcasecharcode(int num){
StringBuilder code = new StringBuilder();
String[] split = allcharcode.split(",");
Random random = new Random();
//Math.random()方法 返回的是 [0,1) 区间范围的数 使用规则一般是 Math.random()*(Max - min) min 就可以达到[min,Max]的数了
for (int i = 0; i < num; i ) {
code.append(split[random.nextInt(split.length)]);
}
return code.toString();
}
// 输入验证码长度 生成混合型字母验证码
public static String allcode(int num){
StringBuilder code = new StringBuilder();
String[] split = allcode.split(",");
Random random = new Random();
//Math.random()方法 返回的是 [0,1) 区间范围的数 使用规则一般是 Math.random()*(Max - min) min 就可以达到[min,Max]的数了
for (int i = 0; i < num; i ) {
code.append(split[random.nextInt(split.length)]);
}
return code.toString();
}
/**
* 测试 验证码
* @param args
*/
public static void main(String[] args) {
System.out.println(allnumcode(6));
System.out.println(alllowcasecharcode(6));
System.out.println(allcode(6));
}
}
特殊说明: 解决问题的光鲜,藏着磕Bug的痛苦。 万物皆入轮回,谁也躲不掉! 以上文章,均是我实际操作,写出来的笔记资料,不会出现全文盗用别人文章!烦请各位,请勿直接盗用!