双色球是最常见的一种彩票。双色球投注区分为红球号码区和蓝球号码区,红球号码范围为01~33,蓝球号码范围为01~16。双色球每期从33个红球中开出6个号码,从16个蓝球中开出1个号码作为中奖号码,双色球玩法即是竞猜开奖号码的6个红球号码和1个蓝球号码,顺序不限。以下为我的代码设计和实现,可供参考。
一、系统原理和设计
随机一组中奖号码:中奖号码由6个红球和1个蓝球组成。定义随机方法用于返回一组中奖号码(7个数据),返回的形式是一个整型数组。
随机的6个中奖的红球号码不能重复:每次随机一个红球号码后去数组中判断是否存在,如果存在则需要重新随机一个数字直到不重复为止。
用户输入一组双色球号码:定义一个方法录入用户输入的6个红球和1个蓝球号码,该方法最终需要返回一个数组,数组中就是用户录入的号码(7位)。
中奖情况判断:定义一个方法接收中奖号码的数组,用户选号的数组,根据命中红球数和篮球数判断最终的中奖情况并输出详情和中奖金额。
统计红球的命中数量:遍历用户的每个选号,然后遍历中奖号码的数组,看当前选号是否在中奖号码中存在,存在则命中数量加1。
二、代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
| public class DoubleChromosphere { public static void main(String[] args) { int[] luckNumbers = createLuckNumber(); int[] userNumbers = userInputNumbers(); judge(luckNumbers, userNumbers); } public static void judge(int[] luckNumbers, int[] userNumbers ){ int redHitNumbers = 0; int blueHitNumbers = 0; for (int i = 0; i < userNumbers.length - 1; i++) { for (int j = 0; j < luckNumbers.length - 1; j++) { if(userNumbers[i] == luckNumbers[j]){ redHitNumbers ++ ; break; } } } blueHitNumbers = luckNumbers[6] == userNumbers[6] ? 1 : 0; System.out.println("中奖号码是:" ); printArray(luckNumbers); System.out.println("您投注号码是:" ); printArray(userNumbers); System.out.println("您命中了几个红球:" + redHitNumbers); System.out.println("您是否命中蓝球:" + ( blueHitNumbers == 1 ? "是": "否" ) ); if(blueHitNumbers == 1 && redHitNumbers < 3){ System.out.println("恭喜您,中了5元小奖!"); }else if(blueHitNumbers == 1 && redHitNumbers == 3 || blueHitNumbers == 0 && redHitNumbers == 4){ System.out.println("恭喜您,中了10元小奖!"); }else if(blueHitNumbers == 1 && redHitNumbers == 4 || blueHitNumbers == 0 && redHitNumbers == 5){ System.out.println("恭喜您,中了200元!"); }else if(blueHitNumbers == 1 && redHitNumbers == 5){ System.out.println("恭喜您,中了3000元大奖!"); }else if(blueHitNumbers == 0 && redHitNumbers == 6){ System.out.println("恭喜您,中了500万超级大奖!"); }else if(blueHitNumbers == 1 && redHitNumbers == 6){ System.out.println("恭喜您,中了1000万巨奖!可以开始享受人生,诗和远方!!"); }else { System.out.println("感谢您为福利事业做出的突出贡献!!"); } } public static int[] userInputNumbers(){ int[] numbers = new int[7]; Scanner sc = new Scanner(System.in); for (int i = 0; i < numbers.length - 1; i++) { System.out.println("请您输入第"+(i + 1)+"个红球号码(1-33、不重复):"); int data = sc.nextInt(); numbers[i] = data; } System.out.println("请您输入一个蓝球号码(1-16):"); int data = sc.nextInt(); numbers[numbers.length - 1] = data; return numbers; } public static void printArray(int[] arr){ for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println(); } 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 data = r.nextInt(33) + 1; boolean flag = true; for (int j = 0; j < i; j++) { if(numbers[j] == data) { flag = false; break; } } if(flag) { numbers[i] = data; break; } } } numbers[numbers.length - 1] = r.nextInt(16) + 1; return numbers; } }
|