用java生成6位验证码,由大小写数字组成,不能重复字符

如题所述

生成随机可以用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+" ");

    }

}
温馨提示:答案为网友推荐,仅供参考
相似回答