public class Main9 {
public static void main(String[] args) {
int[]arr={ 2,588,888,1000,10000};
int [] newArr=new int[arr.length];
//3.抽奖
Random r=new Random();
//因为有5个奖项,所以这里循环五次
for (int i = 0; i <5 ; ) {
//获取随机索引
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]) ;
}
}
//判断prize在数组当中是否存在
//存在的话:true
//不存在的话:false
public static boolean contains(int[] arr, int prize) {
for(int i=0; i<arr.length; i++) {
if(arr[i]==prize) {
return true;
}
}
return false;
}
}
优化以后的代码:
public class Main10 {
public static void main(String[] args) {
int [] arr={2,588,888,1000,11000};
Random sc=new Random();
//把奖池里面的顺序打乱
for (int i = 0; i <arr.length ; i++) {
//获取随机索引
int randomIndex=sc.nextInt(arr.length);
//拿着i跟随机索引上randomIndex的值进行交换
int temp=arr[i];
arr[i] = arr[randomIndex];
arr[randomIndex]=temp;
}
//遍历奖池从0索引开始获取每一个奖项
for (int i = 0; i < arr.length ; i++) {
System.out.print(arr[i]+" ");
}
}
}