抽奖奖品:{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] + "元");
}
}
}