[Java] Lottery System——Nanny Learning Tutorial

Table of contents

 1. Introduction to the lottery system

 2. Code implementation

1. Randomly generate winning numbers

1.1. Winning number createNumber method

 1.2. Control and judgment contains method

2. The user enters the winning number

3. Determine the winning situation

3.1. Method to determine if the award isWin 

3. Complete code


 1. Introduction to the lottery system

The lottery numbers consist of 6 red ball numbers and 1 blue ball number. The red ball number is selected from 1-33, no duplication is allowed, and the blue ball number is selected from 1-16. The red ball only looks at the value, not the order.

Note: Here we stipulate that the first prize is 10 million, the second prize is 300,000, and the others are consistent with the table.

 2. Code implementation

1. Randomly generate winning numbers

1.1. Winning number createNumber method

Create an array with a length of 7 to store the winning numbers, where the first 6 are red balls and the last 1 is blue.

It should be noted that in the for loop, i++ needs to be placed in the if judgment statement. When the numbers are repeated, the i++ statement will not be executed. The ++ operation will only be performed if the input is successful.

    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;
    }
 1.2. Control and judgment contains method

 When there is num in the array arr, it returns false, if not, it returns 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;
    }

2. The user enters the winning number

Also create an array with a length of 7, and use the keyboard to enter the user's input number. Similarly, i++ needs to be placed in the if judgment statement, and then the ++ operation is performed when the input is successful.

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;
    }

3. Determine the winning situation

 Define redCount and blueCount to store the number of the same balls. When writing the for loop, you need to pay attention to the range of red balls.

    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("非常遗憾,没有中奖");
        }


    }
3.1. Method to determine if the award isWin 

 A function used to determine whether you have won a prize and how many prizes you have won. The number of prizes corresponds to the returned number, and is judged by using switch in the main.

    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;
    }

3. Complete code

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;
    }
}

This concludes the content of the Double Color Ball Lottery System. I believe everyone can make their own Double Color Ball Lottery System. The most important thing about this system is code thinking rather than the code itself. Understanding code thinking can be greatly improved.

If you think the author's writing is good, please give the author a big thumbs up to support me. Your support is my biggest motivation for updating!

Guess you like

Origin blog.csdn.net/zzzzzhxxx/article/details/132817201