双色球彩票系统规则:
Admin_Log
双色球最大结果为7位数,六个红球+一个蓝球
红球号码从1~33中选择,蓝球号码从1~16中选择
注:所有思路均在代码段注释中
点击查看双色球中奖规则图示
代码段
Code
import java.util.Random; import java.util.Scanner; public class Dichroic_Sphere { public static void main(String[] args) { // 1. 生成中奖号码 // 双色球最大结果为7位数,六个红球+一个蓝球 // 红球号码从1~33中选择,蓝球号码从1~16中选择 int[] arr = createNumber(); System.out.println("========================="); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println("\n========================="); // 2. 用户输入彩票号码(红球+蓝球) int[] userInputArr = userInputNumber(); // 3. 判断用户的中奖情况 // 红球中奖个数 int redCount = 0; // 蓝球中奖个数 int blueCount = 0; // 判断红球 for (int i = 0; i < userInputArr.length - 1; i++) { int redNumber = userInputArr[i]; for (int j = 0; j < arr.length - 1; j++) { if (redNumber == arr[j]) { redCount++; // 如果找到了,那么后面的数字就没有必要继续比较了 // 跳出内循环,继续判断下一个红球号码是否中奖 break; } } } // 判断蓝球 int blueNember = userInputArr[userInputArr.length - 1]; if (blueNember == arr[arr.length - 1]) { blueCount++; } // 根据红球的个数以及蓝球的个数判断中奖情况 if (redCount == 6 && blueCount == 1) { System.out.println("恭喜你,中奖1000万元!"); } else if (redCount == 6 && blueCount == 0) { System.out.println("恭喜你,中奖500万元!"); } else if (redCount == 5 && blueCount == 1) { System.out.println("恭喜你,中奖3000元!"); } else if ((redCount == 5 && blueCount == 0) || (redCount == 4 && blueCount == 1)) { System.out.println("恭喜你,中奖200元!"); } else if ((redCount == 4 && blueCount == 0) || (redCount == 3 && blueCount == 1)) { System.out.println("恭喜你,中奖10元!"); } else if ((redCount == 2 && blueCount == 1) || (redCount == 1 && blueCount == 1) || (redCount == 0 && blueCount == 1)) { System.out.println("恭喜你,中奖5元!"); } else { System.out.println("谢谢参与,谢谢惠顾!"); } } public static int[] userInputNumber() { // 1. 创建数组,用于添加用户购买的彩票号码 int[] arr = new int[7]; //2. 使用键盘录入供用户输入 Scanner sc = new Scanner(System.in); // 让用户输入红球号码 for (int i = 0; i < 6; ) { System.out.println("请输入第" + (i + 1) + "个红球号码"); int redNumber = sc.nextInt(); // redNumber 在1~33 唯一且不重复 if (redNumber >= 1 && redNumber <= 33) { boolean flag = contains(arr, redNumber); if (!flag) { // 不存在 // 有效的,可以添加到数组中 arr[i] = redNumber; i++; } else { // 存在 System.out.println("当前红球号码" + redNumber + "已经存在," + "请重新输入!"); } } else { System.out.println("当前红球号码超出范围( 1 ~ 33 )!"); } } // 让用户输入蓝球号码 System.out.println("请输入蓝球号码:"); // 1~16 while (true) { int blueNumber = sc.nextInt(); if (blueNumber >= 1 && blueNumber <= 16) { arr[arr.length - 1] = blueNumber; break; } else { System.out.println("当前蓝球号码" + blueNumber + "超出范围( 1 ~ 16 )"); } } return arr; } public static int[] createNumber() { // 1. 创建数组用于添加中奖号码 // 6个红球 1个蓝球,数组长度7 int[] arr = new int[7]; // 2. 随机生成号码并添加到数组中 // 红球:不能重复 // 蓝球:可以和红球重复 // 生成红球号码并添加到数组中 Random r = new Random(); for (int i = 0; i < 6; ) { // 获取红球号码 int redNumber = r.nextInt(33) + 1; boolean flag = contains(arr, redNumber); if (!flag) { // 把红球号码添加到数组当中 arr[i] = redNumber; i++; } } // 生成蓝球号码,并添加到数组中 int blueNumber = r.nextInt(1, 16); arr[arr.length - 1] = blueNumber; return arr; } // 用于数字是否在数组中存在 public static boolean contains(int[] arr, int number) { for (int i = 0; i < arr.length; i++) { if (arr[i] == number) { return true; } } return false; } }