题目:投注号码由6个红球,1个蓝球组成,红色球从1~33(每个数字只有一个,不能重复,不能超出范围)中选择;蓝色球从1~16中选择,红蓝球数字互不干扰
分析:系统随机抽取6个红球(6个红球对应的数字不能出现重复,构造一个contains方法来判断)和1个蓝球,作为中奖号码,红蓝色球上对应的数字放一个数组中。在控制台上,手动输入7个数字,作为消费者买到的号码,放在另一个数字当中,然后对比两个数组的号码是否一致
package text;
import java.util.Random;
import java.util.Scanner;
public class RaffleTicket {public static void main(String[] args) {//中奖号码7个,用一个数组来存储它们//中奖号码规则:红球:1-33随机挑选6个,不能重复;篮球:1-16随机挑选一个,可以与红球相等int[] arrLeast = createNumber();//中奖号码for (int i = 0; i < arrLeast.length; i++) {System.out.print(arrLeast[i] + " ");}System.out.println();int resultArr[]=inputUserArr();//消费者抽到的号码for (int i = 0; i < resultArr.length; i++) {System.out.print(resultArr[i] + " ");}int count=0;//记录红球中奖号码个数for (int i = 0; i < resultArr.length-1; i++) {for (int j = 0; j < arrLeast.length-1; j++){if(resultArr[i]==arrLeast[j]){count++;}}}if (count == (resultArr.length - 1 )&& (resultArr[resultArr.length - 1] == arrLeast[arrLeast.length - 1])) {System.out.println("中奖");} else {System.out.println("未中奖");}}//创建一个方法,用来写中奖号码组成的数组public static int[] createNumber(){int[] arr=new int[7];Random sc=new Random();//红球for (int i = 0; i < arr.length-1;) {int redNumber=sc.nextInt(33)+1;//判断号码是否重复boolean flag=contains(arr,redNumber);if(flag){//没有重复,就赋值到数组arr[i]=redNumber;i++;//只有赋值成功后,才开始下一个索引}}//篮球int blueNumber=sc.nextInt(16)+1;arr[arr.length-1]=blueNumber;return arr;}public static int[] inputUserArr() {int[] arr = new int[7];Scanner sc = new Scanner(System.in);System.out.println("请输入6个红球号码:");//6个红球号码,循环6次for (int i = 0; i < arr.length - 1; ) {int a = i + 1;System.out.println("第" + a + "个号码");int inputRedNumber = sc.nextInt();//先判断范围if (inputRedNumber >= 1 && inputRedNumber <= 33) {//没有超出范围boolean flag = contains(arr, inputRedNumber); //再判断是否重复if (flag) {//没有重复,就赋值到数组arr[i] = inputRedNumber;i++;//只有赋值成功后,才开始下一个索引}else {System.out.print("重复,重新输入");}}else {//超出范围直接重新输入号码System.out.println("超出范围,重新输入");}}System.out.println("请输入1个蓝球号码:");while (true) {int inputBlueNumber = sc.nextInt();if (inputBlueNumber >= 1 && inputBlueNumber <= 16) {arr[arr.length - 1] = inputBlueNumber;break;} else {System.out.println("超出范围,重新输入");}}return arr;}//判断号码是否重复public static boolean contains(int[] arr,int number){for (int i = 0; i < arr.length; i++) {if(arr[i]==number){//重复return false;}}return true;//没有重复}
}
结果
注意