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//不存在的话:falsepublic 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]+" ");}} }