当前位置: 代码迷 >> J2SE >> 如何随机生成6个不同的字符
  详细解决方案

如何随机生成6个不同的字符

热度:23   发布时间:2016-04-23 19:55:20.0
怎么随机生成6个不同的字符
//随机生成6个不同的字符,输入一个比较一下
class Run {
public static void show() {
//自定义char类型的元素
char[] ch = { 'a', '你', '啥', 'j', 'h', 'H', 'c', 'q', '神', 'p' };

//创造Random对象
Random random = new Random();
//创建缓冲区
StringBuilder sb = new StringBuilder();

//判断如果StringBuilder长度 到6 就停止循环
while (sb.length() <6) {

//生成char数组长度的随机数
int r = random.nextInt(ch.length);

//判断缓冲区中有没有这个元素 如果没有,直接append 如果有,不存在,继续循环再次随机
if () {
continue;
}
sb.append(ch[r]);
}
System.out.println(sb.toString());

}
}

------解决思路----------------------
直接上代码,注释了。

//自定义char类型的元素
char[] ch = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' };
//创造Random对象
Random random = new Random();
//创建缓冲区
StringBuilder sb = new StringBuilder();
//初始化一个ArrayList,临时保存所以可用字符
int count = ch.length;
ArrayList<String> list = new ArrayList<String>();
for(int i=0; i<count; i++){
list.add("" +ch[i]);
}
//随机取出字符后,从ArrayList中删除该字符,这样可以保证不重复;每轮循环的随机数产生范围比上一轮减1,避免越界
int step = 6;
for(int i=0; i<step; i++){
int idx = random.nextInt(count-i);
sb.append(list.remove(idx));
}
System.out.println(sb.toString());
  相关解决方案