目录
抽奖的号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1-33中选择,不允许重复,蓝色球号码从1-16中选择。红色球只看值,不看顺序。

注:我们这里规定一等奖为1000万,二等奖为30万,其他与表中一致。
创建一个长度为7的数组存放中奖号码,其中前6个为红球,最后1个为蓝球。
需要注意的是,for循环中,需要把i++放在if判断语句中,当数字重复时不执行i++语句,只有录入成功才进行++操作。
- public static int[] createNumber() {
- int[] arr = new int[7];
- Random r = new Random();
- //生成红球号码
- for (int i = 0; i < 6; ) {
- int redNumber = r.nextInt(33) + 1;
- if (contains(arr, redNumber)) {
- arr[i] = redNumber;
- i++;
- }
- }
-
- //生成蓝球号码
- int blueNumber = r.nextInt(16) + 1;
- arr[6] = blueNumber;
-
- return arr;
- }
当数组arr中有num则返回false,没有则返回true。
- public static boolean contains(int[] arr, int num) {
- for (int i = 0; i < arr.length; i++) {
- if (arr[i] == num) {
- return false;
- }
- }
- return true;
- }
同样创建一个长度为7的数组,利用键盘录入用户输入号码。同样i++需要放入if判断语句中,当录入成功再进行++操作。
- public static int[] userInputNumber() {
- int[] arr = new int[7];
- Scanner sc = new Scanner(System.in);
- //输入红球号码
- for (int i = 0; i < 6; ) {
- System.out.println("请输入第" + (i + 1) + "红球号码");
- int redNumber = sc.nextInt();
- if (redNumber >= 1 && redNumber <= 33) {
- if (contains(arr, redNumber)) {
- arr[i] = redNumber;
- i++;
- } else {
- System.out.println("当前红球号码已存在,请重新输入");
- }
-
- } else {
- System.out.println("当前红球号码超出范围");
- }
- }
- //输入蓝球号码
- while (true) {
- System.out.println("请输入蓝球号码");
- int blueNumber = sc.nextInt();
- if (blueNumber >= 1 && blueNumber <= 16) {
- arr[arr.length - 1] = blueNumber;
- break;
- } else {
- System.out.println("当前蓝球号码超出范围");
- }
- }
- return arr;
- }
定义redCount和blueCount存放相同球的个数,写for循环时需要注意红球的范围。
- public static void main(String[] args) {
- //随机生成中奖号码
- int[] arr = createNumber();
-
- //用户输入中奖号码
- int[] userArr = userInputNumber();
-
- //判断中奖情况
- int redCount = 0;
- int blueCount = 0;
- for (int i = 0; i < userArr.length - 1; i++) {
- int redNumber = userArr[i];
- for (int j = 0; j < arr.length - 1; j++) {
- if (redNumber == arr[j]) {
- redCount++;
- break;
- }
- }
- }
-
- int blueNumber = userArr[userArr.length - 1];
- if (blueNumber == arr[arr.length - 1]) {
- blueCount++;
- }
-
- int winNum = isWin(redCount, blueCount);
- switch (winNum) {
- case 1 -> System.out.println("恭喜你,中奖1000万");
- case 2 -> System.out.println("恭喜你,中奖30万");
- case 3 -> System.out.println("恭喜你,中奖3000元");
- case 4 -> System.out.println("恭喜你,中奖200元");
- case 5 -> System.out.println("恭喜你,中奖10元");
- case 6 -> System.out.println("恭喜你,中奖5元");
- default -> System.out.println("非常遗憾,没有中奖");
- }
-
-
- }
用于判断是否中奖以及中几等奖的函数,几等奖对应返回数字几,并在main中用switch判断。
- public static int isWin(int red, int blue) {
- if (red == 6 && blue == 1)
- return 1;
- else if (red == 6 && blue == 0)
- return 2;
- else if (red == 5 && blue == 1)
- return 3;
- else if ((red == 5 && blue == 0) || (red == 4 && blue == 1))
- return 4;
- else if ((red == 4 && blue == 0) || (red == 3 && blue == 1))
- return 5;
- else if ((red == 2 && blue == 1) || (red == 1 && blue == 1) || (red == 0 && blue == 1))
- return 6;
- else
- return 7;
- }
- import java.util.Random;
- import java.util.Scanner;
-
- public class test7 {
- public static void main(String[] args) {
- //随机生成中奖号码
- int[] arr = createNumber();
-
- //用户输入中奖号码
- int[] userArr = userInputNumber();
-
- //判断中奖情况
- int redCount = 0;
- int blueCount = 0;
- for (int i = 0; i < userArr.length - 1; i++) {
- int redNumber = userArr[i];
- for (int j = 0; j < arr.length - 1; j++) {
- if (redNumber == arr[j]) {
- redCount++;
- break;
- }
- }
- }
-
- int blueNumber = userArr[userArr.length - 1];
- if (blueNumber == arr[arr.length - 1]) {
- blueCount++;
- }
-
- int winNum = isWin(redCount, blueCount);
- switch (winNum) {
- case 1 -> System.out.println("恭喜你,中奖1000万");
- case 2 -> System.out.println("恭喜你,中奖30万");
- case 3 -> System.out.println("恭喜你,中奖3000元");
- case 4 -> System.out.println("恭喜你,中奖200元");
- case 5 -> System.out.println("恭喜你,中奖10元");
- case 6 -> System.out.println("恭喜你,中奖5元");
- default -> System.out.println("非常遗憾,没有中奖");
- }
-
-
- }
-
- public static int isWin(int red, int blue) {
- if (red == 6 && blue == 1)
- return 1;
- else if (red == 6 && blue == 0)
- return 2;
- else if (red == 5 && blue == 1)
- return 3;
- else if ((red == 5 && blue == 0) || (red == 4 && blue == 1))
- return 4;
- else if ((red == 4 && blue == 0) || (red == 3 && blue == 1))
- return 5;
- else if ((red == 2 && blue == 1) || (red == 1 && blue == 1) || (red == 0 && blue == 1))
- return 6;
- else
- return 7;
- }
-
- public static int[] userInputNumber() {
- int[] arr = new int[7];
- Scanner sc = new Scanner(System.in);
- for (int i = 0; i < 6; ) {
- System.out.println("请输入第" + (i + 1) + "红球号码");
- int redNumber = sc.nextInt();
- if (redNumber >= 1 && redNumber <= 33) {
- if (contains(arr, redNumber)) {
- arr[i] = redNumber;
- i++;
- } else {
- System.out.println("当前红球号码已存在,请重新输入");
- }
-
- } else {
- System.out.println("当前红球号码超出范围");
- }
- }
- while (true) {
- System.out.println("请输入蓝球号码");
- int blueNumber = sc.nextInt();
- if (blueNumber >= 1 && blueNumber <= 16) {
- arr[arr.length - 1] = blueNumber;
- break;
- } else {
- System.out.println("当前蓝球号码超出范围");
- }
- }
- return arr;
- }
-
- public static int[] createNumber() {
- int[] arr = new int[7];
- Random r = new Random();
- for (int i = 0; i < 6; ) {
- int redNumber = r.nextInt(33) + 1;
- if (contains(arr, redNumber)) {
- arr[i] = redNumber;
- i++;
- }
- }
- int blueNumber = r.nextInt(16) + 1;
- arr[6] = blueNumber;
-
- return arr;
- }
-
- public static boolean contains(int[] arr, int num) {
- for (int i = 0; i < arr.length; i++) {
- if (arr[i] == num) {
- return false;
- }
- }
- return true;
- }
- }
此次双色球彩票系统的内容就到此为止了,相信大家也能够做出属于自己的双色球彩票系统,这个系统最重要的是代码思维而不是代码本身,理解代码思维能够得到更大的提升。
如果觉得作者写的不错,求给作者一个大大的点赞支持一下,你们的支持是我更新的最大动力!