• 【Java】抽奖系统———保姆学习教程


    目录

     一、抽奖系统介绍

     二、代码实现

    1、随机生成中奖号码

    1.1、中奖号码createNumber方法

     1.2、控制判断contains方法

    2、用户输入中奖号码

    3、判断中奖情况

    3.1、判断奖项isWin方法 

    三、完整代码


     一、抽奖系统介绍

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

    注:我们这里规定一等奖为1000万,二等奖为30万,其他与表中一致。

     二、代码实现

    1、随机生成中奖号码

    1.1、中奖号码createNumber方法

    创建一个长度为7的数组存放中奖号码,其中前6个为红球,最后1个为蓝球。

    需要注意的是,for循环中,需要把i++放在if判断语句中,当数字重复时不执行i++语句,只有录入成功才进行++操作。

    1. public static int[] createNumber() {
    2. int[] arr = new int[7];
    3. Random r = new Random();
    4. //生成红球号码
    5. for (int i = 0; i < 6; ) {
    6. int redNumber = r.nextInt(33) + 1;
    7. if (contains(arr, redNumber)) {
    8. arr[i] = redNumber;
    9. i++;
    10. }
    11. }
    12. //生成蓝球号码
    13. int blueNumber = r.nextInt(16) + 1;
    14. arr[6] = blueNumber;
    15. return arr;
    16. }
     1.2、控制判断contains方法

     当数组arr中有num则返回false,没有则返回true。

    1. public static boolean contains(int[] arr, int num) {
    2. for (int i = 0; i < arr.length; i++) {
    3. if (arr[i] == num) {
    4. return false;
    5. }
    6. }
    7. return true;
    8. }

    2、用户输入中奖号码

    同样创建一个长度为7的数组,利用键盘录入用户输入号码。同样i++需要放入if判断语句中,当录入成功再进行++操作。

    1. public static int[] userInputNumber() {
    2. int[] arr = new int[7];
    3. Scanner sc = new Scanner(System.in);
    4. //输入红球号码
    5. for (int i = 0; i < 6; ) {
    6. System.out.println("请输入第" + (i + 1) + "红球号码");
    7. int redNumber = sc.nextInt();
    8. if (redNumber >= 1 && redNumber <= 33) {
    9. if (contains(arr, redNumber)) {
    10. arr[i] = redNumber;
    11. i++;
    12. } else {
    13. System.out.println("当前红球号码已存在,请重新输入");
    14. }
    15. } else {
    16. System.out.println("当前红球号码超出范围");
    17. }
    18. }
    19. //输入蓝球号码
    20. while (true) {
    21. System.out.println("请输入蓝球号码");
    22. int blueNumber = sc.nextInt();
    23. if (blueNumber >= 1 && blueNumber <= 16) {
    24. arr[arr.length - 1] = blueNumber;
    25. break;
    26. } else {
    27. System.out.println("当前蓝球号码超出范围");
    28. }
    29. }
    30. return arr;
    31. }

    3、判断中奖情况

     定义redCount和blueCount存放相同球的个数,写for循环时需要注意红球的范围。

    1. public static void main(String[] args) {
    2. //随机生成中奖号码
    3. int[] arr = createNumber();
    4. //用户输入中奖号码
    5. int[] userArr = userInputNumber();
    6. //判断中奖情况
    7. int redCount = 0;
    8. int blueCount = 0;
    9. for (int i = 0; i < userArr.length - 1; i++) {
    10. int redNumber = userArr[i];
    11. for (int j = 0; j < arr.length - 1; j++) {
    12. if (redNumber == arr[j]) {
    13. redCount++;
    14. break;
    15. }
    16. }
    17. }
    18. int blueNumber = userArr[userArr.length - 1];
    19. if (blueNumber == arr[arr.length - 1]) {
    20. blueCount++;
    21. }
    22. int winNum = isWin(redCount, blueCount);
    23. switch (winNum) {
    24. case 1 -> System.out.println("恭喜你,中奖1000万");
    25. case 2 -> System.out.println("恭喜你,中奖30万");
    26. case 3 -> System.out.println("恭喜你,中奖3000元");
    27. case 4 -> System.out.println("恭喜你,中奖200元");
    28. case 5 -> System.out.println("恭喜你,中奖10元");
    29. case 6 -> System.out.println("恭喜你,中奖5元");
    30. default -> System.out.println("非常遗憾,没有中奖");
    31. }
    32. }
    3.1、判断奖项isWin方法 

     用于判断是否中奖以及中几等奖的函数,几等奖对应返回数字几,并在main中用switch判断。

    1. public static int isWin(int red, int blue) {
    2. if (red == 6 && blue == 1)
    3. return 1;
    4. else if (red == 6 && blue == 0)
    5. return 2;
    6. else if (red == 5 && blue == 1)
    7. return 3;
    8. else if ((red == 5 && blue == 0) || (red == 4 && blue == 1))
    9. return 4;
    10. else if ((red == 4 && blue == 0) || (red == 3 && blue == 1))
    11. return 5;
    12. else if ((red == 2 && blue == 1) || (red == 1 && blue == 1) || (red == 0 && blue == 1))
    13. return 6;
    14. else
    15. return 7;
    16. }

    三、完整代码

    1. import java.util.Random;
    2. import java.util.Scanner;
    3. public class test7 {
    4. public static void main(String[] args) {
    5. //随机生成中奖号码
    6. int[] arr = createNumber();
    7. //用户输入中奖号码
    8. int[] userArr = userInputNumber();
    9. //判断中奖情况
    10. int redCount = 0;
    11. int blueCount = 0;
    12. for (int i = 0; i < userArr.length - 1; i++) {
    13. int redNumber = userArr[i];
    14. for (int j = 0; j < arr.length - 1; j++) {
    15. if (redNumber == arr[j]) {
    16. redCount++;
    17. break;
    18. }
    19. }
    20. }
    21. int blueNumber = userArr[userArr.length - 1];
    22. if (blueNumber == arr[arr.length - 1]) {
    23. blueCount++;
    24. }
    25. int winNum = isWin(redCount, blueCount);
    26. switch (winNum) {
    27. case 1 -> System.out.println("恭喜你,中奖1000万");
    28. case 2 -> System.out.println("恭喜你,中奖30万");
    29. case 3 -> System.out.println("恭喜你,中奖3000元");
    30. case 4 -> System.out.println("恭喜你,中奖200元");
    31. case 5 -> System.out.println("恭喜你,中奖10元");
    32. case 6 -> System.out.println("恭喜你,中奖5元");
    33. default -> System.out.println("非常遗憾,没有中奖");
    34. }
    35. }
    36. public static int isWin(int red, int blue) {
    37. if (red == 6 && blue == 1)
    38. return 1;
    39. else if (red == 6 && blue == 0)
    40. return 2;
    41. else if (red == 5 && blue == 1)
    42. return 3;
    43. else if ((red == 5 && blue == 0) || (red == 4 && blue == 1))
    44. return 4;
    45. else if ((red == 4 && blue == 0) || (red == 3 && blue == 1))
    46. return 5;
    47. else if ((red == 2 && blue == 1) || (red == 1 && blue == 1) || (red == 0 && blue == 1))
    48. return 6;
    49. else
    50. return 7;
    51. }
    52. public static int[] userInputNumber() {
    53. int[] arr = new int[7];
    54. Scanner sc = new Scanner(System.in);
    55. for (int i = 0; i < 6; ) {
    56. System.out.println("请输入第" + (i + 1) + "红球号码");
    57. int redNumber = sc.nextInt();
    58. if (redNumber >= 1 && redNumber <= 33) {
    59. if (contains(arr, redNumber)) {
    60. arr[i] = redNumber;
    61. i++;
    62. } else {
    63. System.out.println("当前红球号码已存在,请重新输入");
    64. }
    65. } else {
    66. System.out.println("当前红球号码超出范围");
    67. }
    68. }
    69. while (true) {
    70. System.out.println("请输入蓝球号码");
    71. int blueNumber = sc.nextInt();
    72. if (blueNumber >= 1 && blueNumber <= 16) {
    73. arr[arr.length - 1] = blueNumber;
    74. break;
    75. } else {
    76. System.out.println("当前蓝球号码超出范围");
    77. }
    78. }
    79. return arr;
    80. }
    81. public static int[] createNumber() {
    82. int[] arr = new int[7];
    83. Random r = new Random();
    84. for (int i = 0; i < 6; ) {
    85. int redNumber = r.nextInt(33) + 1;
    86. if (contains(arr, redNumber)) {
    87. arr[i] = redNumber;
    88. i++;
    89. }
    90. }
    91. int blueNumber = r.nextInt(16) + 1;
    92. arr[6] = blueNumber;
    93. return arr;
    94. }
    95. public static boolean contains(int[] arr, int num) {
    96. for (int i = 0; i < arr.length; i++) {
    97. if (arr[i] == num) {
    98. return false;
    99. }
    100. }
    101. return true;
    102. }
    103. }

    此次双色球彩票系统的内容就到此为止了,相信大家也能够做出属于自己的双色球彩票系统,这个系统最重要的是代码思维而不是代码本身,理解代码思维能够得到更大的提升。

    如果觉得作者写的不错,求给作者一个大大的点赞支持一下,你们的支持是我更新的最大动力!

  • 相关阅读:
    LLM-文本分块(langchain)与向量化(阿里云DashVector)存储,嵌入LLM实践
    关于mysql/mariadb会产生大量错误日志导致硬盘空间很快被占用问题的解决方法
    前端小白是如何利用chatgt用一周时间从做一款微信小程序的
    含文档+PPT+源码等]精品spring boot汽车销售管理系统[包运行成功]程序设计源码计算机毕设
    如何在Ubuntu20.04上安装RDP远程
    Python中的循环与可迭代对象
    直接折半希尔排序
    最新AI创作系统+ChatGPT商业运营源码+支持GPT4.0+支持国内AI模型/支持AI绘画
    铱钌合金/氧化铱仿生纳米酶|钯纳米酶|GMP-Pd纳米酶|金钯复合纳米酶|三元金属Pd-M-Ir纳米酶|中空金铂合金纳米笼核-多空二氧化硅壳纳米酶
    Kubernetes(23):数据存储-基本存储
  • 原文地址:https://blog.csdn.net/zzzzzhxxx/article/details/132817201