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



目录
相关文章
|
9月前
|
缓存 C语言 C++
【项目日记(九)】项目整体测试,优化以及缺陷分析
【项目日记(九)】项目整体测试,优化以及缺陷分析
|
9月前
|
自然语言处理 监控 搜索推荐
佛萨奇2.0/3.0Metaforce原力元宇宙系统开发步骤逻辑丨方案项目丨案例设计丨成熟技术丨源码功能
佛萨奇(VoZaChi)是一个虚拟助手系统,其发展至2.0和3.0版本会有一些特定需求和逻辑
|
存储 NoSQL 算法
线上真实排队系统重构案例分享——实战篇
线上真实排队系统重构案例分享——实战篇
611 0
|
区块链 开发者
Jogger慢跑者跑鞋零撸模式系统开发详细规则/逻辑分析/案例详情/项目方案/源码部署
  DApp是指以区块链为底层技术平台的分布式应用程序,它使得开发者可以构建去中心化和自主运行的应用程序,并通过链上的合约机制实现代码不可更改性和事务透明性。
|
测试技术 应用服务中间件
软件测试面试题:在给定的测试环境下进行,考虑被测系统的业务压力量和典型场景?
软件测试面试题:在给定的测试环境下进行,考虑被测系统的业务压力量和典型场景?
186 0
|
算法
信用评分系统运行原理下篇(1)
信用评分系统运行原理下篇(1)
208 0
信用评分系统运行原理下篇(1)
|
机器学习/深度学习 Python
信用评分系统运行原理下篇(3)
信用评分系统运行原理下篇(3)
138 0
信用评分系统运行原理下篇(3)
|
机器学习/深度学习
信用评分系统运行原理上篇(1)
信用评分系统运行原理上篇(1)
201 0
信用评分系统运行原理上篇(1)
信用评分系统运行原理上篇(3)
信用评分系统运行原理上篇(3)
192 0
信用评分系统运行原理上篇(3)
信用评分系统运行原理上篇(2)
信用评分系统运行原理上篇(2)
152 0
信用评分系统运行原理上篇(2)