Java面向过程练习题-双色球中奖问题

175 阅读1分钟

微信图片_202306302136021.png

# 双色球中奖问题

需求如下:

1.投注号码有6个红球号码和一个蓝球号码组成
2.红球号码由1-33选择,篮球号码从1-6中选择
3.一等奖(6+1),二等奖(6+0),三等奖(5+1),四等奖(4+1或5+0)五等奖(3+1或者4+0),六等奖(1+1,2+1,0+1)

分析如下:
1.随机生成六个红球和1个篮球作为中奖号码存储在数组当中
2.用户输入购买的六个号码,并判断是否符合规范
3.用于比较用户输入数据和中奖号码,得到中奖个数
4.根据题目要求得到中奖结果,
具体实现代码如下
.

package com.company.LotteryDrawBall;

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

//双色球抽奖系统需求如下:
/*
    1.投注号码有6个红球号码和一个蓝球号码组成
    2.红球号码由1-33选择,篮球号码从1-6中选择
    3.一等奖(6+1),二等奖(6+0),三等奖(5+1),四等奖(4+1或5+0)五等奖(3+1或者4+0),六等奖(1+1,2+1,0+1)
 */
public class Main {


    public static void main(String[] args) {
//1.首先随机生成六个红球和一个蓝球作为中奖号码存储在数组中
        int[] winningLottery = createNumber();

        //打印测试
        for (int i = 0; i < winningLottery.length; i++) {
            System.out.print(winningLottery[i]+" ");
        }
        System.out.println("---------------");
        //2.用户输入购买的六个号码,并判断是否符合规范
        int[] userInput = userInputNumber();

        //打印测试
//        for (int i = 0; i < userInput.length; i++) {
//            System.out.println(userInput[i]);
//        }

        //3.用于比较用户输入数据和中奖号码,得到中奖个数
        //红球中奖号码的数量
        int redCount = 0;
        //蓝球中奖号码的数量
        int blueCount = 0;
        //判断红球的中奖数量
        for (int i = 0; i < userInput.length-1; i++) {
            int redNumber=userInput[i];
            for (int j = 0; j < userInput.length-1; j++) {
                if (redNumber==winningLottery[j]){
                    redCount++;
                    //如果找到了,退出内层循环
                    break;
                }
            }
        }
        //判断蓝球的中奖数量
        int blueNumber=userInput[userInput.length-1];
        if (blueNumber==winningLottery[winningLottery.length-1])
            blueCount++;
//        //打印测试
//        System.out.println();
            if (redCount==6&&blueCount==1)
                System.out.println("恭喜你,获得一等奖");
            else if (redCount==6&&blueCount==0)
                System.out.println("恭喜你,获得二等奖");
            else if (redCount==5&&blueCount==1)
                System.out.println("恭喜你,获得三等奖");
            else if ((redCount==4&&blueCount==1)||(redCount==5&&blueCount==0))
                System.out.println("恭喜你,获得四等奖");
            else if ((redCount==3&&blueCount==1)||(redCount==4&&blueCount==0))
                System.out.println("恭喜你,获得五等奖");
            else if ((redCount==1&&blueCount==1)||(redCount==2&&blueCount==1)||(redCount==0&&blueCount==1))
                System.out.println("恭喜你,获得六等奖");
            else System.out.println("谢谢参与");
    }


    public static int[] createNumber() {
        //用于接收中奖号码
        int[] arr = new int[7];
        Random r = new Random();
        //给六个红球中奖号码进行分配
        for (int i = 0; i < arr.length - 1; ) {
            int redNumber = r.nextInt(33) + 1;
            boolean flag = contains(arr, redNumber);
            if (!flag) {
                arr[i] = redNumber;
                i++;
            }
        }
        //给出蓝球的中奖号码
        int blueNumber = r.nextInt(6) + 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) {
                //如果在数组中找到该数据返回true
                return true;
            }
        }
        //反之返回false
        return false;
    }

    public static int[] userInputNumber() {
        int[] arr = new int[7];
        Scanner sc = new Scanner(System.in);
        //输入五个红球的号码
        for (int i = 0; i < arr.length - 1; ) {
            System.out.println("请输入第" + (i + 1) + "个红球:");
            int redNumber = sc.nextInt();
            boolean flag = contains(arr, redNumber);
            if ((redNumber >= 1 && redNumber <= 33) && (!flag)) {

                arr[i] = redNumber;
                i++;
            } else {
                System.out.println("输入数据不合法或该双色球号已填写过");
            }
        }
        //添加用户输入的蓝色球
        for (int i = 0; i < 1; ) {
            System.out.println("请输入第7个蓝球:");
            int blueNumber = sc.nextInt();
            if (blueNumber >= 1 && blueNumber <= 6) {
                arr[arr.length - 1] = blueNumber;
                i++;
            } else
                System.out.println("输入数据范围不合法");
        }
        return arr;
    }

}