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



目录
相关文章
|
5月前
|
数据采集
问卷调查题目构建要点:确保有效反馈的技巧
设计高质量问卷需注意:明确目标,使用简洁语言,避免引导性问题,保持问题单一,提供明确选项,合理顺序,避免敏感问题,预测试以修正错误,控制问卷长度,和确保题目清晰无歧义。这些步骤能提高问卷可靠性和数据质量。
55 3
|
5月前
|
Java API 数据安全/隐私保护
JavaSE——基础小项目-模拟ATM系统(项目主要目标、技术选型、架构搭建、具体实现、完整代码注释)(一)
JavaSE——基础小项目-模拟ATM系统(项目主要目标、技术选型、架构搭建、具体实现、完整代码注释)(一)
113 0
|
5月前
|
Java 数据安全/隐私保护
JavaSE——基础小项目-模拟ATM系统(项目主要目标、技术选型、架构搭建、具体实现、完整代码注释)(二)
JavaSE——基础小项目-模拟ATM系统(项目主要目标、技术选型、架构搭建、具体实现、完整代码注释)(二)
137 0
|
6月前
|
缓存 C语言 C++
【项目日记(九)】项目整体测试,优化以及缺陷分析
【项目日记(九)】项目整体测试,优化以及缺陷分析
|
6月前
|
搜索推荐 物联网 计算机视觉
二二复制公排模式系统开发|案例分析
无论未来做什么样的社交+零售模式
|
SQL 安全 关系型数据库
项目实战典型案例7——在线人员列表逻辑混乱反例
项目实战典型案例7——在线人员列表逻辑混乱反例
154 0
项目实战典型案例7——在线人员列表逻辑混乱反例
|
安全 搜索推荐 测试技术
【实测】用chatGPT来完整的走一次测试流程吧,看看它到底相当于我们什么等级的工程师?
【实测】用chatGPT来完整的走一次测试流程吧,看看它到底相当于我们什么等级的工程师?
|
6月前
|
供应链 监控 项目管理
第十四章项目采购管理(选择2分,偶尔案例16分)
第十四章项目采购管理(选择2分,偶尔案例16分)
|
6月前
|
自然语言处理 监控 项目管理
第六章项目整体管理(选择5分,案例偶尔考)
第六章项目整体管理(选择5分,案例偶尔考)
|
Web App开发 监控 程序员
一软一硬:记录我的工作电脑两次出现性能问题的分析思路和解决过程
一软一硬:记录我的工作电脑两次出现性能问题的分析思路和解决过程