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

 我来答
百度网友324204d
2017-03-21 · TA获得超过648个赞
知道小有建树答主
回答量:380
采纳率:85%
帮助的人:298万
展开全部

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

    }

}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式