日期:2014-05-20 浏览次数:20812 次
class Welcome { public static void main(String[] args) { int key; int[] suit=new int[13]; boolean[] sw=new boolean[52]; //这个sw数组要怎么用搞不懂 for(int i=0;i<suit.length;i++) { while(true)//这一循环是用来判断产生的数有咩有重复的吗,但里面的内容看不懂 { key=(int)(Integer.MAX_VALUE*Math.random()*10)%sw.length;//这一句好复杂,不知道干了什么QAQ if(sw[key]==false) break; } suit[i]=key; sw[key]=true; } for(int i=0;i<suit.length;i++) { System.out.print(suit[i]+" "); } System.out.println(); } }
Set<Integer> set = new HashSet<Integer>(); Random random = new Random(); while (set.size() < 13) {//取得13个 set.add(random.nextInt(51));//0-51范围数据 } Iterator<Integer> it = set.iterator(); List<Object> suit=new ArrayList<Object>(); String matter=""; for(;it.hasNext();){ // matter+=it.next().toString()+" "; suit.add(it.next());//切记不能两个一起添加,这样会认为迭代2次,会报异常错误:NoSuchElementException } System.out.println(matter);//或则直接这样输出 for(int i=0;i<suit.size();i++) { System.out.println(suit.get(i)); }
------解决方案--------------------
boolean[] sw=new boolean[52]; //这个sw数组要怎么用搞不懂这个是用来判断是否存在某个数的数组,比如随机取了一个数,2那么sw[2] = true;表示2已经有了
while(true)//这一循环是用来判断产生的数有咩有重复的吗,但里面的内容看不懂
{
key=(int)(Integer.MAX_VALUE*Math.random()*10)%sw.length;//这一句好复杂,不知道干了什么QAQ(随机产生0-51的整数)
if(sw[key]==false)//判断产生的数是否存在
break;
}
suit[i]=key;//如果不存在就把数据放入到suit当中
sw[key]=true;//并且不对应位置设置为true以表示该数已经存在了
这里是用来取13个不重复的0-51的数。
------解决方案--------------------