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

 我来答
青鸟中关村专家
2017-03-22 · 知道合伙人软件行家
青鸟中关村专家
知道合伙人软件行家
采纳数:1734 获赞数:8440
就职于北大青鸟中关村,自2004年踏入北大青鸟这个行业,已经有11年工作经验和8年的培训经验,寓教于乐

向TA提问 私信TA
展开全部
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+" ");

}

}
田菜2011cq
2017-03-27 · 超过251用户采纳过TA的回答
知道小有建树答主
回答量:395
采纳率:0%
帮助的人:343万
展开全部
表达式转换类
${expression}计算expression并输出
#{ expression }数字计算#{ expression ;format}安格式输出数字format为M和m
M表示小数点后最多的位数,m表示小数点后最少的位数如#{121.2322;m2M2}输出121.23 !
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沉默是金别墨迹
2017-03-22
知道答主
回答量:5
采纳率:0%
帮助的人:4930
展开全部
有些长,给你个可以直接使用的验证码,你可以改下长度,
http://www.cnblogs.com/wufengxyz/archive/2011/12/04/2275489.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
上孤若林
2017-03-21
知道答主
回答量:11
采纳率:0%
帮助的人:2.8万
展开全部
用random生成随机数
追问
做出来了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式