JavaSE——模拟双色球业务(双色球业务介绍、总体实现步骤分析,代码+运行结果)

目录

双色球业务介绍

总体实现步骤分析

用户投注一组号码

代码

运行结果

随机生成一组中奖号码

代码

判断中奖情况

代码

运行结果


双色球业务介绍

投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1一33中选择(不重复);蓝色球号码从1-16中选择。

根据红色球和蓝色球的号码来共同决定是否中奖。

奖等中奖条件单注奖金分配
红色球蓝色球
一等奖6个1个最高1000万
二等奖6个0个最高500万
三等奖5个1个3000元
四等奖5个0个200元
4个1个
五等奖4个0个10元
3个1个
3个0个
六等奖2个1个5元
1个1个
0个1个

总体实现步骤分析

主要是要实现三个功能:

  1. 用于让用户投注一组号码(前六个是红色球,最后一个是蓝色球),并返回用户投注的号码
  2. 系统随机一组中奖号码(前六个是红色球,最后一个是蓝色球),并返回这组中奖号码
  3. 传入两组号码,用来判断用户投注号码的中奖情况,并输出

用户投注一组号码

代码


import java.util.Scanner;

public class Test
{
    public static void main(String[] args) {
        int[] userNumbers = new int[7];
        userNumbers = userSelectNumbers();
        printIntArray(userNumbers);
    }

    //1.用于让用户投注一组号码(前六个是红色球,最后一个是蓝色球),并返回用户投注的号码
    public static int[] userSelectNumbers(){
        //定义一个整型数组用于存储用户投注的号码球
        int[] numbers = new int[7];

        Scanner sc = new Scanner(System.in);

        //把红色球和蓝色球分开处理
        //先投入六个红色球
        for (int i = 0; i < numbers.length - 1; i++) {
            while (true) {
                System.out.println("请您输入第" + (i + 1) + "红色球的号码(1-33之间,不能重复):");
                int number = sc.nextInt();
                //判断用户输入的红色球号码是否在1-33之间
                if(number < 1 || number > 33){
                    System.out.println("对不起,您输入的红色球号码不在1-33之间,请重新输入!");
                }else{
                    //号码在1-33之间,接下来要判断是否重复
                    if(exist(numbers,number)){
                        //定义一个方法来判断是否重复
                        System.out.println("对不起,您当前输入的红色球号码与前面重复,请重新输入!");
                    }else{
                        numbers[i] = number;
                        break;
                    }
                }
            }
        }

        //再投注一个蓝色球
        while(true){
            System.out.println("请您输入最后一个蓝色球的号码(1-16):");
            int number = sc.nextInt();
            //像之前一样判断是否在范围内
            if(number < 1 || number > 16){
                System.out.println("对不起,您输入的蓝色球号码范围不对!");
            }else{
                numbers[6] = number;
                break;
            }
        }

        return numbers;
    }

    public static boolean exist(int[] numbers,int number){
        for (int i = 0; i < numbers.length - 1; i++) {
            if(number == numbers[i]){
                return true;
            }
        }
        return false;
    }

        public static void printIntArray(int[] arr){
        System.out.print("[" + " ");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(i == (arr.length - 1) ? arr[i] + " " + "]" : arr[i] + " ");
        }
    }
}

运行结果

随机生成一组中奖号码

代码

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

public class Test
{
    public static void main(String[] args) {
        int[] LuckNumbers = new int[7];
        LuckNumbers = createLuckNumber();
        printIntArray(LuckNumbers);
    }

    public static boolean exist(int[] numbers,int number){
        for (int i = 0; i < numbers.length - 1; i++) {
            if(number == numbers[i]){
                return true;
            }
        }
        return false;
    }

    public static void printIntArray(int[] arr){
        System.out.print("[" + " ");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(i == (arr.length - 1) ? arr[i] + " " + "]" : arr[i] + " ");
        }
    }

    //2.系统随机一组中奖号码(前六个是红色球,最后一个是蓝色球),并返回这组中奖号码
    public static int[] createLuckNumber(){
        int[] numbers = new int[7];
        //要产生随机数
        Random r = new Random();
        //同样,先随机产生红色球的号码
        for (int i = 0; i < numbers.length - 1; i++) {

            while(true){
                int number = r.nextInt(33) + 1;
                //随机是取了范围的,所以不必判断是否在范围内,而需要判断是否重复
                if(! exist(numbers,number)){
                    numbers[i] = number;
                    break;
                }
            }
        }

        //再来随机一个蓝色球
        numbers[6] = r.nextInt(16) + 1;
        return numbers;
    }
}

判断中奖情况

代码


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

public class Test
{
    public static void main(String[] args) {
        int[] userNumbers = new int[7];
        userNumbers = userSelectNumbers();
        printIntArray(userNumbers);
        int[] LuckNumbers = new int[7];
        LuckNumbers = createLuckNumber();
        printIntArray(LuckNumbers);
        judge(userNumbers,LuckNumbers);
    }

    //1.用于让用户投注一组号码(前六个是红色球,最后一个是蓝色球),并返回用户投注的号码
    public static int[] userSelectNumbers(){
        //定义一个整型数组用于存储用户投注的号码球
        int[] numbers = new int[7];

        Scanner sc = new Scanner(System.in);

        //把红色球和蓝色球分开处理
        //先投入六个红色球
        for (int i = 0; i < numbers.length - 1; i++) {
            while (true) {
                System.out.println("请您输入第" + (i + 1) + "红色球的号码(1-33之间,不能重复):");
                int number = sc.nextInt();
                //判断用户输入的红色球号码是否在1-33之间
                if(number < 1 || number > 33){
                    System.out.println("对不起,您输入的红色球号码不在1-33之间,请重新输入!");
                }else{
                    //号码在1-33之间,接下来要判断是否重复
                    if(exist(numbers,number)){
                        //定义一个方法来判断是否重复
                        System.out.println("对不起,您当前输入的红色球号码与前面重复,请重新输入!");
                    }else{
                        numbers[i] = number;
                        break;
                    }
                }
            }
        }

        //再投注一个蓝色球
        while(true){
            System.out.println("请您输入最后一个蓝色球的号码(1-16):");
            int number = sc.nextInt();
            //像之前一样判断是否在范围内
            if(number < 1 || number > 16){
                System.out.println("对不起,您输入的蓝色球号码范围不对!");
            }else{
                numbers[6] = number;
                break;
            }
        }

        return numbers;
    }

    public static boolean exist(int[] numbers,int number){
        for (int i = 0; i < numbers.length - 1; i++) {
            if(number == numbers[i]){
                return true;
            }
        }
        return false;
    }

    public static void printIntArray(int[] arr){
        System.out.print("[" + " ");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(i == (arr.length - 1) ? arr[i] + " " + "]" : arr[i] + " ");
        }
        System.out.println(" ")
    }

    //2.系统随机一组中奖号码(前六个是红色球,最后一个是蓝色球),并返回这组中奖号码
    public static int[] createLuckNumber(){
        int[] numbers = new int[7];
        //要产生随机数
        Random r = new Random();
        //同样,先随机产生红色球的号码
        for (int i = 0; i < numbers.length - 1; i++) {

            while(true){
                int number = r.nextInt(33) + 1;
                //随机是取了范围的,所以不必判断是否在范围内,而需要判断是否重复
                if(! exist(numbers,number)){
                    numbers[i] = number;
                    break;
                }
            }
        }

        //再来随机一个蓝色球
        numbers[6] = r.nextInt(16) + 1;
        return numbers;
    }

    //3.传入两组号码,用来判断用户投注号码的中奖情况,并输出
    public static void judge(int[] userNumbers,int[] LuckNumbers){
        //分别定义两个变量用于记录两个球命中了几个
        int redCount = 0,blueCount = 0;

        //用迭代循环来判断红色球的中奖情况
        for (int i = 0; i < userNumbers.length - 1; i++) {
            for(int j = 0;j < LuckNumbers.length - 1;j++){
                if(userNumbers[i] == LuckNumbers[j]){
                    redCount++;
                    break;
                }
            }
        }
        //判断蓝色球的中奖情况
        blueCount = userNumbers[6] == LuckNumbers[6] ? 1 : 0;

        System.out.println("总命中的红色球数量是:" + redCount);
        System.out.println("总命中的蓝色球数量是:" + blueCount);

        //最后再来输出中的是什么奖,奖金多少
        //可以用if语句分开判断,也可以将红色球的数量与蓝色球的数量结合起来用switch判断
        int judge = (redCount * 10) + blueCount;
        switch (judge){
            case 61:
                System.out.println("恭喜你中了一等奖,1000万!");
                break;
            case 60:
                System.out.println("恭喜你中了二等奖,500万!");
                break;
            case 51:
                System.out.println("恭喜你中了三等奖,3000元!");
                break;
            case 50:
            case 41:
                System.out.println("恭喜你中了四等奖,200元!");
                break;
            case 40:
            case 31:
            case 30:
                System.out.println("恭喜你中了五等奖,10元!");
                break;
            case 21:
            case 11:
            case 1:
                System.out.println("恭喜你中了六等奖,5元!");
                break;
            default:
                System.out.println("感谢您为体育事业做出的贡献!");
                break;
        }
    }

}

运行结果


END


学习自:黑马程序员——JavaSE课程

  • 18
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值