package 专题练习; //需求: //投注号码由6个红色球号码和1个蓝色球号码组成 //红色球号码从1-33中选择; //蓝色球号码从1-16中选择 /* 如下是中将条件和奖金表 一等奖 : 红色球和蓝色球全中 1000万 二等奖 : 中6个红色球 0个蓝色球 500万 三等奖 : 中5个红色球 1个蓝色球 3000元 四等奖 : 中5个红色球 200元 或 中4个红球 1个蓝色球 五等奖 : 中4个红球 0个蓝色球 10元 或 中3个红球 1个蓝色球 六等奖 : 中2个红球 1个蓝色球 5元 或 中1个红球 1个蓝色球 或 中0个红球 1个蓝色球 */ import java.util.Random; import java.util.Scanner; //思路: 1. (1)首先要随机生成6个红色球号码 // (2)判断红色号码是否重复 // (3)随机生成1个蓝色球号码 // (4)把红色球号码和蓝色球号码放到同一个数组中 // // 2. (1)得到用户所给的号码 // (2)要判断号码是否符合规范 // (3)不符合规范要重新输入 // // 3. 得到用户答对的号码的个数 // 4. 6个if语句来最后判断 public class Double_Color_Lottery_System { public static void main(String[] args) { //主入口 //弄一个red数组 int[] red_array = new int[6]; //赋值red数组(6位) red_array = random_red_number(red_array); //得到6位red_number数组 //生成蓝色随机号码 int blue_num = blue_random_number(); //合并 int[] RED_BLUE = HeBing_number(red_array,blue_num); print_array(RED_BLUE); //得到用户号码 int[] user_num = User_input(RED_BLUE); //求个数 int[] count = ChouZhongGeShu(RED_BLUE,user_num); //求奖金 GET_money(count); } //判断是否重复方法,重复返回-1,没有重复返回1 public static int PanDuan_repetition(int[] red_number_array,int random_red_number){ for (int i = 0; i < red_number_array.length; i++) { if(red_number_array[i] == random_red_number){ return -1; } } return 1; } //随机生成6个红色球号码 public static int[] random_red_number(int[] red_number_array){ Random r = new Random(); int[] red_arrary = new int[red_number_array.length]; for (int i = 0; i < red_number_array.length; i++) { int red_random_number = r.nextInt(33) + 1; //这里需要判断是否重复(可以写一个判断是否重复的方法) if(PanDuan_repetition(red_arrary,red_random_number) == -1){ i--; } else{ //没重复就录入 red_arrary[i] = red_random_number; } } return red_arrary; } //随机生成一个蓝色球号码 public static int blue_random_number(){ Random r = new Random(); int blue_number = r.nextInt(16) + 1; return blue_number; } //合并蓝色球号码和红色球号码 public static int[] HeBing_number(int[] red_array,int blue_number){ int[] red_blue_array = new int[red_array.length + 1]; //合并数组的长度为红色号码个数 + 蓝色号码个数 for (int i = 0; i < red_blue_array.length - 1; i++) { red_blue_array[i] = red_array[i]; } red_blue_array[red_blue_array.length - 1] = blue_number; return red_blue_array; //合并完毕(random_number_of_red_and_blue) } //得到用户所给号码 (返回的是一个数组,并且要判断输入的号码是否合理) public static int[] User_input(int[] red_blue_array){ int[] number = new int[red_blue_array.length]; //这里的number数组就是直接总长为7,前六个留给了red,等下直接把最后一个给蓝色球号码 //输入红色号码的提示 System.out.println("用户请准备输入红色号码"); Scanner c = new Scanner(System.in); for (int i = 0; i < number.length - 1; i++) { System.out.println("开始读入第" + (i+1) + "个红色球号码"); int user_number = c.nextInt();//用户读入 if(user_number > 33 || user_number < 1){ System.out.println("读入错误,数字非法,请重新输入:"); i--; } else{ number[i] = user_number; } } //准备读入蓝色球号码 System.out.println("开始读入蓝色球号码:"); int blue_number; while (true) { blue_number = c.nextInt(); if(blue_number>16 || blue_number<1){ System.out.println("蓝色球号码非法,请重新读入:"); } else{ break; } } //合并user的红色球号码和蓝色球号码 number[red_blue_array.length-1] = blue_number; return number; //合并完毕(user) } //求user对了几个红色球号码和蓝色球号码(可以返回一个小数组,记录分别中了多少个) public static int[] ChouZhongGeShu(int[] red_blue_random,int[] user_red_blue){ int count_red = 0; int count_blue = 0; //开始记录红色球个数(两个数组的最后一个数都是blue值) for (int i = 0; i < red_blue_random.length - 1; i++) { for (int j = 0; j < user_red_blue.length - 1; j++) { if(red_blue_random[i] == user_red_blue[j]){ count_red++; } } } if(red_blue_random[red_blue_random.length-1] == user_red_blue[user_red_blue.length-1]){ count_blue++; } //弄一个数组记录两个的值 int[] red_or_blue_count = new int[]{count_red,count_blue}; return red_or_blue_count; } //6个if条件语句 public static void GET_money(int[] red_blue_count){ //一等奖 if(red_blue_count[0] == 6 && red_blue_count[1] == 1 ){ System.out.println("1000万"); } //二等奖 else if(red_blue_count[0] == 6 && red_blue_count[1] == 0){ System.out.println("500万"); } //三等奖 else if(red_blue_count[0] == 5 && red_blue_count[1] == 1){ System.out.println("3000元"); } //四等奖 else if(red_blue_count[0] == 5 && red_blue_count[1] == 0 || red_blue_count[0] == 4 && red_blue_count[1] == 1){ System.out.println("200元"); } //五等奖 else if(red_blue_count[0] == 4 && red_blue_count[1] == 0 || red_blue_count[0] == 3 && red_blue_count[1] == 1){ System.out.println("10元"); } //六等奖 else if(red_blue_count[0] == 2 && red_blue_count[1] == 1 || red_blue_count[0] == 1 && red_blue_count[1] == 1 || red_blue_count[0] == 0 && red_blue_count[1] == 1){ System.out.println("5元"); } } //临时打印方法 public static void print_array(int[] a){ for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } } }