java实现抽奖活动功能

抽奖奖品:{2,588,888,1000,10000}

需求:模拟抽奖,打印出每个奖项,奖项出现的顺序随机且不重复

思路:设置一个数组存取被抽出的奖项,下一次抽取时如果抽取的奖项是数组中存在的,则重新抽取

public class test8 {
    public static void main(String[] args) {
        // 1.定义数组表示奖池
        int[] moneyArr = {2,588,888,1000,10000};
        // 2.定义新数组
        int[] result = new int[moneyArr.length];
        Random r = new Random();
        // 3.抽奖
        for (int i = 0; i < moneyArr.length; ) {
            int num = r.nextInt(moneyArr.length);
            if (!contains(result, moneyArr[num])){
                result[i] = moneyArr[num];
                // 添加完有效奖项后,才移动索引
                i++;
            }
        }
        // 3.输出结果
        for (int i = 0; i < result.length; i++) {
            System.out.println("恭喜你中奖获得:"+result[i] +"元");
        }
    }

    // 判断price在数组中是否存在
    public static boolean contains(int[] arr,int money){
        for (int i = 0; i < arr.length; i++) {
            if (arr[i]==money){
                return true;
            }
        }
        return false;
    }
}

优化

思路:打乱奖池顺序,遍历奖池

public class test9 {
    public static void main(String[] args) {

        // 1.定义数组表示奖池
        int[] moneyArr = {2, 588, 888, 1000, 10000};
        Random r = new Random();
        for (int i = 0; i < moneyArr.length; i++) {
            int num = r.nextInt(moneyArr.length);
            int temp = moneyArr[i];
            moneyArr[i] = moneyArr[num];
            moneyArr[num] = temp;
        }
        // 2.遍历奖池
        for (int i = 0; i < moneyArr.length; i++) {
            System.out.println("恭喜你中奖获得:" + moneyArr[i] + "元");
        }

    }
}