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

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

双色球业务介绍

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

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

图片.png

总体实现步骤分析

主要是要实现三个功能:

  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



目录
相关文章
|
7月前
|
缓存 C语言 C++
【项目日记(九)】项目整体测试,优化以及缺陷分析
【项目日记(九)】项目整体测试,优化以及缺陷分析
|
7月前
|
设计模式 安全 Java
老系统重构系列--如何用一套流程接入所有业务线
**摘要:** 本文介绍了老系统改造的过程,作者提出,ToB业务的挑战在于需要支持多种差异化的业务需求,而模板模式在处理这种需求时可能会导致继承关系复杂和粒度过粗。为了解决这些问题,文章提出了以下步骤: 1. **梳理流程差异点**:识别不同业务流程的差异,以便确定扩展点。 2. **领域模型梳理**:区分核心域和支撑域,确保核心域的稳定性。 3. **二次抽象隔离层**:创建隔离层,避免核心域因新业务接入而变得不稳定。 4. **基于SPI的扩展体系建设**:选择了COLA-SPI实现扩展点,允许业务域定义接口并实现差异化的流程逻辑。
176 0
|
7月前
|
搜索推荐 物联网 计算机视觉
二二复制公排模式系统开发|案例分析
无论未来做什么样的社交+零售模式
|
存储 小程序 数据库
小程序整体的思路
小程序整体的思路
211 0
|
7月前
|
自然语言处理 监控 项目管理
第六章项目整体管理(选择5分,案例偶尔考)
第六章项目整体管理(选择5分,案例偶尔考)
101 0
|
运维 算法 调度
(文章复现)建筑集成光储系统规划运行综合优化方法matlab代码
参考文献: [1]陈柯蒙,肖曦,田培根等.一种建筑集成光储系统规划运行综合优化方法[J].中国电机工程学报,2023,43(13):5001-5012.
|
存储 NoSQL 算法
线上真实排队系统重构案例分享——实战篇
线上真实排队系统重构案例分享——实战篇
581 0
模拟双色球小程序
模拟双色球小程序
|
算法 C++
详细实例说明+典型案例实现 对枚举法进行全面分析 | C++
简单的来说,算法就是用计算机程序代码来实现数学思想的一种方法。学习算法就是为了了解它们在计算机中如何演算,以及在当今的信息时代,它们是如何在各个层面上影响我们的日常生活的,从而提高我们的逻辑思维能力和处理实际问题的能力。善用算法、巧用算法,是培养程序设计逻辑的重中之重,许多实际的问题都可用多个可行的算法来解决, 但是要从中找出最优的解决算法却是一项挑战。
225 0
详细实例说明+典型案例实现 对枚举法进行全面分析 | C++
|
数据采集 运维 安全
谈谈如何评估数据资产的价值​
数据是需要管理、部署和评估的业务资产。
谈谈如何评估数据资产的价值​