双色球业务介绍
投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1一33中选择(不重复);蓝色球号码从1-16中选择。
根据红色球和蓝色球的号码来共同决定是否中奖。
总体实现步骤分析
主要是要实现三个功能:
- 用于让用户投注一组号码(前六个是红色球,最后一个是蓝色球),并返回用户投注的号码
- 系统随机一组中奖号码(前六个是红色球,最后一个是蓝色球),并返回这组中奖号码
- 传入两组号码,用来判断用户投注号码的中奖情况,并输出
用户投注一组号码
代码
import java.util.Scanner; public class Test { public static void main(String[] args) { int[] userNumbers = new int[7]; userNumbers = userSelectNumbers(); printIntArray(userNumbers); } //1.用于让用户投注一组号码(前六个是红色球,最后一个是蓝色球),并返回用户投注的号码 public static int[] userSelectNumbers(){ //定义一个整型数组用于存储用户投注的号码球 int[] numbers = new int[7]; Scanner sc = new Scanner(System.in); //把红色球和蓝色球分开处理 //先投入六个红色球 for (int i = 0; i < numbers.length - 1; i++) { while (true) { System.out.println("请您输入第" + (i + 1) + "红色球的号码(1-33之间,不能重复):"); int number = sc.nextInt(); //判断用户输入的红色球号码是否在1-33之间 if(number < 1 || number > 33){ System.out.println("对不起,您输入的红色球号码不在1-33之间,请重新输入!"); }else{ //号码在1-33之间,接下来要判断是否重复 if(exist(numbers,number)){ //定义一个方法来判断是否重复 System.out.println("对不起,您当前输入的红色球号码与前面重复,请重新输入!"); }else{ numbers[i] = number; break; } } } } //再投注一个蓝色球 while(true){ System.out.println("请您输入最后一个蓝色球的号码(1-16):"); int number = sc.nextInt(); //像之前一样判断是否在范围内 if(number < 1 || number > 16){ System.out.println("对不起,您输入的蓝色球号码范围不对!"); }else{ numbers[6] = number; break; } } return numbers; } public static boolean exist(int[] numbers,int number){ for (int i = 0; i < numbers.length - 1; i++) { if(number == numbers[i]){ return true; } } return false; } public static void printIntArray(int[] arr){ System.out.print("[" + " "); for (int i = 0; i < arr.length; i++) { System.out.print(i == (arr.length - 1) ? arr[i] + " " + "]" : arr[i] + " "); } } }
运行结果
随机生成一组中奖号码
代码
import java.util.Random; import java.util.Scanner; public class Test { public static void main(String[] args) { int[] LuckNumbers = new int[7]; LuckNumbers = createLuckNumber(); printIntArray(LuckNumbers); } public static boolean exist(int[] numbers,int number){ for (int i = 0; i < numbers.length - 1; i++) { if(number == numbers[i]){ return true; } } return false; } public static void printIntArray(int[] arr){ System.out.print("[" + " "); for (int i = 0; i < arr.length; i++) { System.out.print(i == (arr.length - 1) ? arr[i] + " " + "]" : arr[i] + " "); } } //2.系统随机一组中奖号码(前六个是红色球,最后一个是蓝色球),并返回这组中奖号码 public static int[] createLuckNumber(){ int[] numbers = new int[7]; //要产生随机数 Random r = new Random(); //同样,先随机产生红色球的号码 for (int i = 0; i < numbers.length - 1; i++) { while(true){ int number = r.nextInt(33) + 1; //随机是取了范围的,所以不必判断是否在范围内,而需要判断是否重复 if(! exist(numbers,number)){ numbers[i] = number; break; } } } //再来随机一个蓝色球 numbers[6] = r.nextInt(16) + 1; return numbers; } }
判断中奖情况
代码
import java.util.Random; import java.util.Scanner; public class Test { public static void main(String[] args) { int[] userNumbers = new int[7]; userNumbers = userSelectNumbers(); printIntArray(userNumbers); int[] LuckNumbers = new int[7]; LuckNumbers = createLuckNumber(); printIntArray(LuckNumbers); judge(userNumbers,LuckNumbers); } //1.用于让用户投注一组号码(前六个是红色球,最后一个是蓝色球),并返回用户投注的号码 public static int[] userSelectNumbers(){ //定义一个整型数组用于存储用户投注的号码球 int[] numbers = new int[7]; Scanner sc = new Scanner(System.in); //把红色球和蓝色球分开处理 //先投入六个红色球 for (int i = 0; i < numbers.length - 1; i++) { while (true) { System.out.println("请您输入第" + (i + 1) + "红色球的号码(1-33之间,不能重复):"); int number = sc.nextInt(); //判断用户输入的红色球号码是否在1-33之间 if(number < 1 || number > 33){ System.out.println("对不起,您输入的红色球号码不在1-33之间,请重新输入!"); }else{ //号码在1-33之间,接下来要判断是否重复 if(exist(numbers,number)){ //定义一个方法来判断是否重复 System.out.println("对不起,您当前输入的红色球号码与前面重复,请重新输入!"); }else{ numbers[i] = number; break; } } } } //再投注一个蓝色球 while(true){ System.out.println("请您输入最后一个蓝色球的号码(1-16):"); int number = sc.nextInt(); //像之前一样判断是否在范围内 if(number < 1 || number > 16){ System.out.println("对不起,您输入的蓝色球号码范围不对!"); }else{ numbers[6] = number; break; } } return numbers; } public static boolean exist(int[] numbers,int number){ for (int i = 0; i < numbers.length - 1; i++) { if(number == numbers[i]){ return true; } } return false; } public static void printIntArray(int[] arr){ System.out.print("[" + " "); for (int i = 0; i < arr.length; i++) { System.out.print(i == (arr.length - 1) ? arr[i] + " " + "]" : arr[i] + " "); } System.out.println(" ") } //2.系统随机一组中奖号码(前六个是红色球,最后一个是蓝色球),并返回这组中奖号码 public static int[] createLuckNumber(){ int[] numbers = new int[7]; //要产生随机数 Random r = new Random(); //同样,先随机产生红色球的号码 for (int i = 0; i < numbers.length - 1; i++) { while(true){ int number = r.nextInt(33) + 1; //随机是取了范围的,所以不必判断是否在范围内,而需要判断是否重复 if(! exist(numbers,number)){ numbers[i] = number; break; } } } //再来随机一个蓝色球 numbers[6] = r.nextInt(16) + 1; return numbers; } //3.传入两组号码,用来判断用户投注号码的中奖情况,并输出 public static void judge(int[] userNumbers,int[] LuckNumbers){ //分别定义两个变量用于记录两个球命中了几个 int redCount = 0,blueCount = 0; //用迭代循环来判断红色球的中奖情况 for (int i = 0; i < userNumbers.length - 1; i++) { for(int j = 0;j < LuckNumbers.length - 1;j++){ if(userNumbers[i] == LuckNumbers[j]){ redCount++; break; } } } //判断蓝色球的中奖情况 blueCount = userNumbers[6] == LuckNumbers[6] ? 1 : 0; System.out.println("总命中的红色球数量是:" + redCount); System.out.println("总命中的蓝色球数量是:" + blueCount); //最后再来输出中的是什么奖,奖金多少 //可以用if语句分开判断,也可以将红色球的数量与蓝色球的数量结合起来用switch判断 int judge = (redCount * 10) + blueCount; switch (judge){ case 61: System.out.println("恭喜你中了一等奖,1000万!"); break; case 60: System.out.println("恭喜你中了二等奖,500万!"); break; case 51: System.out.println("恭喜你中了三等奖,3000元!"); break; case 50: case 41: System.out.println("恭喜你中了四等奖,200元!"); break; case 40: case 31: case 30: System.out.println("恭喜你中了五等奖,10元!"); break; case 21: case 11: case 1: System.out.println("恭喜你中了六等奖,5元!"); break; default: System.out.println("感谢您为体育事业做出的贡献!"); break; } } }
运行结果
END