用java生成6位验证码,由大小写数字组成,不能重复字符
public class GenerateRandomLetterAndNum {
public static void main(String[] args) {
Set store = getletterandnum(6);
printSet(store);
}
public static Set getletterandnum(int length) {
Set set =new HashSet();
for (int i = 0; i < length; i++) {
String value = getrandom();
set.add(value);
}
if (set.size()<length) { //如果没有生成6位
String value = getrandom();//继续调用生成随机数的方法
set.add(value);
}
return set;
}
private static String getrandom() { //生成随机字母和数字方法
String value = "";
Random random = new Random();
int gen = random.nextInt(2);//0、1、2
String charornum = gen % 2 == 0 ? "char" : "num";
if ("char".equals(charornum)) {
int temp = random.nextInt(2) % 2 == 0 ? 65 : 97;
int ascii = random.nextInt(26);
value += (char) (ascii + temp);
} else if ("num".equalsIgnoreCase(charornum)) {
value += String.valueOf(random.nextInt(10));
}
return value;
}
public static void printSet(Set set){ //打印set的方法
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
String ele = (String) iterator.next();
System.out.print(ele+" ");
}
}
public class test{
private static String [] str={"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"};
private static String DarwCode(){
String strRandom="";
char temp;
int [] num = new int[6];
int numA=0,numB=0,numC=0,ramNum=(int)(Math.random()*62);
//去掉重复的关键代码
num[0]=ramNum;
for (int i = 1; i < num.length; i++) {
num[i] = (int)(Math.random()*62);
for (int j = 0; j < i; j++) {
while ((num[i]==num[j])&&(i>=1)) {
i--;
}
}
}
//输出字符串
for (int i = 0; i < num.length; i++) {
strRandom+=str[num[i]];
}
for (int i = 0; i <strRandom.length(); i++) {
temp=strRandom.substring(i,i+1).charAt(0);
if ((int)temp>=48&&(int)temp<=57) {
numA++;
}else if ((int)temp>=65&&(int)temp<=90) {
numB++;
}else if((int)temp>=97&&(int)temp<=122){
numC++;
}
}
if ((numA+numB==6)||(numA+numC==6)||(numB+numC==6)) {
strRandom = DarwCode();
}
return strRandom;
}
public static void main(String[] args) {
System.out.println(DarwCode());
}
}
生成随机可以用Random类,不能重复可以考虑放在HashSet中,因为HashSet的值是不能重复的,看代码如下:
public class GenerateRandomLetterAndNum {
public static void main(String[] args) {
Set<String> store = getletterandnum(6);
printSet(store);
}
public static Set<String> getletterandnum(int length) {
Set<String> set =new HashSet<String>();
for (int i = 0; i < length; i++) {
String value = getrandom();
set.add(value);
}
if (set.size()<length) { //如果没有生成6位
String value = getrandom();//继续调用生成随机数的方法
set.add(value);
}
return set;
}
private static String getrandom() { //生成随机字母和数字方法
String value = "";
Random random = new Random();
int gen = random.nextInt(2);//0、1、2
String charornum = gen % 2 == 0 ? "char" : "num";
if ("char".equals(charornum)) {
int temp = random.nextInt(2) % 2 == 0 ? 65 : 97;
int ascii = random.nextInt(26);
value += (char) (ascii + temp);
} else if ("num".equalsIgnoreCase(charornum)) {
value += String.valueOf(random.nextInt(10));
}
return value;
}
public static void printSet(Set set){ //打印set的方法
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
String ele = (String) iterator.next();
System.out.print(ele+" ");
}
}
19561631097:用java生成6位验证码,要求字母大小写数字组成,不能重复字符
史屠瞿
:答:public class GenerateRandomLetterAndNum { public static void main(String[] args) { Set<String> store = getletterandnum(6);printSet(store);} public static Set<String> getletterandnum(int length) { Set<String> set =new HashSet<String>();for (int i = 0; i < length; i++...
19561631097:用java生成6位验证码,由大小写数字组成,不能重复字符
史屠瞿
:答:set.add(value);}if (set.size()<length) { //如果没有生成6位String value = getrandom();//继续调用生成随机数的方法set.add(value);}return set;}private static String getrandom() { //生成随机字母和数字方法String value = "";Random random = new Random();int gen = random.ne...
19561631097:java如何随机生成6位数的验证码
史屠瞿
:答:public static final char[] chars={'1','2','3','4','5','6','7','8','9','0','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M'};public static Random random=new R...
19561631097:java如何实现6位数字短信验证码
史屠瞿
:答://网易云信分配的密钥,请替换你在管理后台应用下申请的appSecretprivate static final String APP_SECRET="aa6d416fdd4e";//验证码长度,范围4~10,默认为4private static final String CODELEN="6";这里有免费试学的视频供你参考学习:
19561631097:Java怎么生成一个指定长度的字符串,且这个字符串必须包含大小写字母和数...
史屠瞿
:答:void main(void){ FILE * f;//文件句柄 char buf[20];//随机字符串 int i;randomize();//初始化随机值 for(i = 0;i < 20;i++)buf[i] = cszChar[random(62)];//随机从cszChar中取一个字符 f = fopen( "filename ", "w ");//打开...
19561631097:为什么验证码不用区分大小写?
史屠瞿
:答:验证码有区分大小写的,也有不区分大小写的,主要取决于程序的实现。验证码是在规定的范围内进行自动生成的,存储数据如果记录大小,那么验证码就要区分大小写,如果不记录大小写,就不区分大小写。
19561631097:JavaScript随机生成6位数的验证码,包含数字或大小写字母,并将验证码显...
史屠瞿
:答:给你提供个思路:创建一个6位的数组 循环数组,6次随机获取a-z,A-Z,0-9的字符和数字 将随机获取的字符和数字填入相对应数组下标之中 将数组的值拼接转换成字符串,填入文本框 谢谢采纳!
19561631097:用java怎么制作验证码
史屠瞿
:答://将生成的验证码存到服务器 request.getSession().setAttribute("checkcode", stringbuffer.toString());//key和value //将图片发送给浏览器 ImageIO.write(image, "jpg", response.getOutputStream());} } 用户登录界面代码 package s1;import java.io.IOException;import java.io.PrintWriter;impor...
19561631097:Java如何实现验证码验证功能
史屠瞿
:答:首先,写一个验证码生成帮助类,用来绘制随机字母: import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; import java.util.Random; import javax.imageio.ImageIO; public final ...
19561631097:怎样用java实现验证码
史屠瞿
:答:// 取随机产生的认证码( 位数字)String codeList = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ;String sRand= ;for (int i= ;i< ;i++){ int a=random nextInt(codeList length() );String rand=codeList substring(a a+ );sRand+=rand;// 将认证码显示到图象中 g setColor(...