简单模拟双色球问题

双色球问题

规则简介

中奖规则

简单分析

在这里插入图片描述

随机一组中奖号码的分析:
1. 中奖号码由6个红球和1个篮球组成(注意:6个红球要求不能重复)。
2. 可以定义方法用于返回一组中奖号码(7个数据),返回的形式是一个整型数。

代码如下

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

public class BiColor {
    public static void main(String[] args) {
        int[] luckNumbers = creatLuckNumbers();                 //随机一组中奖号码
        int[] userNumbers = userInputNumbers();                 //用户输入一组双色球号
        judge(luckNumbers, userNumbers);                        //查看中奖与否
        printLuckNumbersAndUserNumbers(luckNumbers, userNumbers);              //展示中奖号码与用户购买号码
    }

    //1.随机一组中奖号码返回
    public static int[] creatLuckNumbers() {
        int[] luckNumbers = new int[7];
        boolean[] flag = new boolean[36];                           //定义一个标记数组
        Random random = new Random();
        int luckNumber;
        for (int i = 0; i < luckNumbers.length - 1; i++) {          //产生六个不同的随机数存入数组
            do {                                                    //循环产生不同的随机数
                luckNumber = random.nextInt(33) + 1;
            } while (flag[luckNumber]);
            flag[luckNumber] = true;
            luckNumbers[i] = luckNumber;
        }
        luckNumber = random.nextInt(16) + 1;                //产生蓝色球的号码
        luckNumbers[luckNumbers.length-1] = luckNumber;
        return luckNumbers;
    }

    //用户输入一组双色球号返回
    public static int[] userInputNumbers() {
        System.out.println("请选择您想要的球注(请在1~36间选择一个数,一共输入7次):");
        int[] userNumbers = new int[7];
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < userNumbers.length; i++) {
            int userNumber = scanner.nextInt();
            //检查数据的合法性
            userNumber = checkNumber(userNumber,i);
            userNumbers[i] = userNumber;
        }
        return userNumbers;
    }

    //传入两组号码,判断用户中奖情况
    public static void judge(int[] luckNumbers, int[] userNumbers) {
        int count = 0;
        boolean blue = false;
        for (int i = 0; i < luckNumbers.length - 1; i++) {          //计算红球猜中的次数
            if (userNumbers[i] == luckNumbers[i]) {
                count++;
            }
        }
        if (luckNumbers[6] == userNumbers[6]) {
            blue = true;                                               //猜中蓝色球
        }
        if (count == 7 & blue) {
            System.out.println("恭喜您可以少奋斗10年,喜提1000万大奖!");
        } else if (count == 6) {
            System.out.println("恭喜您可以少奋斗5年,喜提500万大奖!");
        } else if (count == 5 & blue) {
            System.out.println("恭喜您中了三等奖,喜提3000元!");
        } else if (count == 5) {
            System.out.println("恭喜您中了四等奖,喜提200元!");
        } else if (count == 4 & blue) {
            System.out.println("恭喜您中了四等奖,喜提200元!");
        } else if (count == 4) {
            System.out.println("恭喜您中了五等奖,喜提10元!");
        } else if (count == 3 & blue) {
            System.out.println("恭喜您中了五等奖,喜提10元!");
        } else if (count == 2 & blue) {
            System.out.println("恭喜您中六等奖,喜提5元!");
        } else if (count == 1 & blue) {
            System.out.println("恭喜您中六等奖,喜提5元!");
        } else if (blue) {
            System.out.println("恭喜您中六等奖,喜提5元!");
        } else {
            System.out.println("很感谢您为体彩的发展贡献的一份力量,欢迎下次光临~~~");
        }

    }


    //检查数据的合法性
    public static int checkNumber(int userNumber, int i) {
        Scanner scanner = new Scanner(System.in);
        if(i<6){     //红色球号码的范围
            while (userNumber > 33 || userNumber <= 0) {
                System.out.println("请在1~33(包括边界)间选择一个数:");
                userNumber = scanner.nextInt();
            }
        }else{       //蓝色球号码的范围
            while (userNumber > 16 || userNumber <= 0) {
                System.out.println("请在1~16(包括边界)间选择一个数:");
                userNumber = scanner.nextInt();
            }
        }
        return userNumber;
    }

    //展示中奖号码与用户购买号码
    public static void printLuckNumbersAndUserNumbers(int[] luckNumbers, int[] userNumbers) {
        System.out.println("本次开奖结果:");
        for (int i = 0; i < luckNumbers.length; i++) {
            System.out.print(luckNumbers[i] + "    ");
        }
        System.out.println("\t");
        System.out.println("您购买的号码为:");
        for (int i = 0; i < userNumbers.length; i++) {
            System.out.print(userNumbers[i] + "    ");
        }
    }
}

简单补充

这是黑马程序员Java基础的一道练习题,自己简单的一些想法和代码展示,有很多不足,望指正。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值