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]+" "); } } }