当前位置: 代码迷 >> Java相关 >> 关于JAVA的小程序题解决办法
  详细解决方案

关于JAVA的小程序题解决办法

热度:452   发布时间:2013-02-25 21:45:46.0
关于JAVA的小程序题
要求输出一个1到60之间随机的无重复的数,求解答。。。

------解决方案--------------------------------------------------------
Java有随机函数吧,我记得是有的,但是输出的范围就不记得了。
可以把输出的数存到一个数组里,然后每输出一次就比对,有就重新产生,没有就输出
------解决方案--------------------------------------------------------
Java code
import java.util.HashSet;import java.util.Iterator;import java.util.Random;public class RandomGen {    // 利用HashSet的特征,只能存放不同的值    public static HashSet<Integer> set = new HashSet<Integer>();    public int count;// 需要生成随机数的个数    public RandomGen(int num) {        this.count = num;    }    public static RandomGen init(int num) {        return new RandomGen(num);    }    // 生成【begin,end】区间内num个随机数    public void genRadoms(int begin, int end, int num, HashSet<Integer> set) {        if (num > (end - begin + 1) || end < begin) {            return;        }        for (int i = 0; i < num; i++) {// 生成num个随机数            // 调用Math.random()方法            int temp = (int) (Math.random() * (end - begin)) + begin;            set.add(temp);// 将不同的数存入HashSet中        }        int setLen = set.size();        // 如果存入的数小于指定生成的个数,则调用递归再生成剩余个数的随机数,如此循环,直到达到指定大小        if (setLen < count) {            genRadoms(begin, end, count - setLen, set);// 递归        }    }   public static void printSet(HashSet<Integer> set) {// 打印结果        int count = 1;        Iterator<Integer> i = set.iterator();        while (i.hasNext()) {            System.out.print("["+count + "]:" + i.next()+" ");            if(count%10==0){                System.out.println();            }            count++;        }    }
  相关解决方案