一个大V直插油奖,奖品是现金红包,分别有{2,588,888,1000,10000};五个奖金。请使用代码横拟抽奖,打印出每个奖项,奖项的出现顺序随机且不重复。打印效果如下:(随机顺序,不一定是下面的顺序)
888元的奖金被抽出
588元的奖金被抽出
10000元的奖金被抽出
1000元的奖金被抽出
2元的奖金被抽出
①、数组索引随机交换
import java.util.*;
public class Main {
public static void main(String[] args) {
int[] arr = {2, 588, 888, 1000, 10000};
Random r = new Random();
for (int i = 0; i < 5; i++) {
int randomIndex = r.nextInt(arr.length);
int temp = arr[i];
arr[i] = arr[randomIndex];
arr[randomIndex] = temp;
System.out.println(arr[i]);
}
}
}
②、运用方法,随机数字判断赋予新数组
import java.util.*;
public class Main {
public static void main(String[] args) {
int[] arr = {2, 588, 888, 1000, 10000};
int[] newArr = new int[arr.length];
Random r = new Random();
for (int i = 0; i < 5; i++) {
int randomIndex = r.nextInt(arr.length);
int prize = arr[randomIndex];
boolean flag = contains(newArr, prize);
if (!flag) {
newArr[i] = prize;
i++;
}
}
for (int i = 0; i < newArr.length; i++) {
System.out.println(newArr[i]);
}
}
public static boolean contains(int[] arr, int prize) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] == prize) {
return true;
}
}
return false;
}
}