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



目录
相关文章
|
12月前
|
人工智能 搜索推荐
写歌词的技巧和方法:塑造完美歌词结构的艺术,妙笔生词AI智能写歌词软件
歌词是音乐的灵魂,其结构艺术至关重要。开头需引人入胜,主体部分无论是叙事还是抒情,都应层次分明、情感丰富,结尾则需升华或留白,给人以深刻印象。《妙笔生词智能写歌词软件》提供多种AI辅助功能,助你轻松创作完美歌词,成为音乐创作的得力助手。
|
Java 数据库连接 Maven
springboot集成mybatis时提示找不到Mapper Bean
springboot集成mybatis时提示找不到Mapper Bean
|
数据采集 算法 JavaScript
彩票中奖率的真相:用 JavaScript 看透彩票背后的随机算法(上)
原本这篇文章是打算叫「假如我是彩票系统开发者」,但细想一下,如果在文章中引用太多的 JavaScript 的话,反而不是那么纯粹,毕竟也只是我的一厢情愿,彩票开发也不全如本文所讲,有所误导的话便也是得不偿失了。
|
JavaScript
vite原理之解析.vue文件
vite就是在本地启用了一个http服务器,然后将本地的文件通过浏览器的请求将本地的文件返回到浏览器;当然其中会有大量的解析,用于将文件内容解析为浏览器可以理解的内容
|
12月前
|
传感器 机器学习/深度学习 人工智能
智能物流:自动化仓库与配送系统
【10月更文挑战第22天】在21世纪的全球化经济中,物流行业作为连接生产与消费的桥梁,其效率与准确性至关重要。本文深入探讨智能物流的核心技术,如自动化仓储、无人驾驶配送和物联网,以及应用案例和未来发展趋势,揭示自动化仓库与配送系统如何引领物流行业的智能化转型。
1202 0
|
12月前
|
机器学习/深度学习 算法 语音技术
超越传统模型:探讨门控循环单元(GRU)在语音识别领域的最新进展与挑战
【10月更文挑战第7天】随着人工智能技术的不断进步,语音识别已经从一个相对小众的研究领域发展成为日常生活中的常见技术。无论是智能手机上的语音助手,还是智能家居设备,甚至是自动字幕生成系统,都离不开高质量的语音识别技术的支持。在众多用于语音识别的技术中,基于深度学习的方法尤其是递归神经网络(RNNs)及其变体如长短期记忆网络(LSTMs)和门控循环单元(GRUs)已经成为了研究和应用的热点。
497 2
|
12月前
|
区块链
【智能合约】新版Remix编写实现第一个HelloWorld
【智能合约】新版Remix编写实现第一个HelloWorld
211 2
|
Unix Linux Shell
nohup 与 >/dev/null 与 2>&1 作用与区别
nohup 与 >/dev/null 与 2>&1 作用与区别
1127 0
6.Electron之BrowserView嵌入子视图
6.Electron之BrowserView嵌入子视图
254 1
|
弹性计算 运维 Shell
统计双色球各个数字的中奖概率
【4月更文挑战第29天】
435 1