1.判断数据prize在数组中是否存在
存在:true
不存在:false
代码:
public static boolean contains(int[] arr, int prize){ for (int i = 0; i < arr.length; i++) { if (prize == arr[i]){ return true; } } return false; }
注意:当整个循环结束之后才返回false,而不是在if之后。
2.给数组中添加合法的数据,若不合法重新输入
代码:
public static int[] getScore(){ int[] arr = new int[6]; Scanner sc = new Scanner(System.in); for (int i = 0; i < 6; ) { System.out.println("请输入第" + (i+1) + "名评委给出的分数"); int score = sc.nextInt(); if (score >=0 && score <= 100){ //分数应该在0~100区间中 arr[i] = score; i++; }else { System.out.println("当前的得分超出了范围,请重新输入,当前的i值为:" + i); } } return arr; }
注意:i++写在if语句中,只有输入合法的数据之后,才i++ ;否则一直卡在当前循环中
案例-抽奖:
一个大V直播抽奖,奖品是现金红包,分别有(2,588,888,1000,10000}五个奖金。
请使用代码模拟抽奖打印出每个奖项,奖项的出现顺序要随机且不重复。
随机:Random()
不重复:定义一个新数组,用来存放抽奖的结果
每次先判断新数组中是否有该数据,若有,重新抽,若没有,存入新数组
代码:
public class Test09 { public static void main(String[] args) { //1.写一个数组,存储奖池 int[] arr = {2,588,888,1000,10000}; //2.定义一个新数组,存储抽奖的结果 int[] newArr = new int[arr.length]; Random r = new Random(); for (int i = 0; i < arr.length;) { //获取随机索引 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是否在新数组中 public static boolean contains(int[] arr, int prize){ for (int i = 0; i < arr.length; i++) { if (prize == arr[i]){ return true; } } return false; } }
优化:
//1.打乱奖池 int[] arr = {2,588,888,1000,10000}; Random r = new Random(); for (int i = 0; i < arr.length; i++) { int randomIndex = r.nextInt(arr.length); int temp = arr[i]; arr[i] = arr[randomIndex]; arr[randomIndex] = temp; } //2.遍历奖池 for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); }