Complete version of Shuangseqiu lottery system (implemented by JAVA)

Case description:

The betting numbers consist of 6 red numbers and 1 blue ball number. The red ball number is chosen from 1-33; the blue ball number is chosen from 1-16.

case analysis:

  1. First define a method to create the winning number
  1. Define another method to set the user's output number
  1. Determine the user’s winning status
  1. Output the winning amount

The complete code is as follows (with detailed explanation):

package com.heima.dome1;

import java.util.Random;
import java.util.Scanner;

public class text27 {
    public static void main(String[] args) {
        //分析:
        //1.先定义一个方法,用来创建中奖号码
        //2.再定义一个方法,用来设置用户的输出号码
        //3.判断用户的中奖情况
        //4.输出中奖金额
        //双色球

        //1.生成中奖号码

        int[] arr = creatNumber();
        System.out.println("=============================");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println(" ");
        System.out.println("==============================");
        //2.用户输入彩票号码

        int[] userArr = userNumber();
        //3.判断用户的中奖情况

        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++;
        }
        //根据红球和篮球的个数判断中奖情况
        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[] userNumber() {
        //创建数组用于添加用户购买的彩票号码
        //6个红球 1个蓝球
        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();
            //redNumber  在1~33 唯一不重复
            if (redNumber >= 1 && redNumber <= 33) {
                boolean flag = contains(arr, redNumber);
                if (!flag) {
                    //不存在重复
                    //有效的 可以添加到数组
                    arr[i] = redNumber;
                    i++;
                } else {
                    //存在重复 重新输入
                    System.out.println("当前红球号码已经存在,请重新输入:");
                }
            } else {
                System.out.println("当前红球号码超出范围");
            }
        }
        //让用户输入蓝球号码
        System.out.println("请输入蓝球号码:");
        int blueNumber = sc.nextInt();
        //1~16
        while (true) {
            if (blueNumber >= 1 && blueNumber <= 16) {
                arr[arr.length - 1] = blueNumber;
                break;
            } else {
                System.out.println("当前蓝球号码超出范围");
            }
        }
        return arr;
    }

    public static int[] creatNumber() {
        //创建数组用于添加中奖号码
        //6个红球 1个蓝球 数组长度为7
        int[] arr = new int[7];
        //随机生成号码添加到数组中
        //红球: 不能重复
        //蓝球: 可以和红球号码重复


        //生成红球号码,并添加到数组中
        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++;//号码添加成功后才+1
            }
        }
        //生成蓝球号码并添加到数组中
        int blueNumber = r.nextInt(16) + 1;
        arr[arr.length - 1] = blueNumber;
        return arr;
    }

    //用于判断号码是否在数组中存在
    public static boolean contains(int[] arr, int number) {
        for (int i = 0; i < arr.length-1; i++) {
            if (arr[i] == number) {
                return true;
            }
        }
        return false;
    }
}
The running results are as follows:

Guess you like

Origin blog.csdn.net/m0_62869063/article/details/129696323