首页 > 编程语言 >Java【双色球案例】

Java【双色球案例】

时间:2023-01-02 21:58:12浏览次数:40  
标签:双色球 Java 红球 System 案例 蓝球 println custBall out

题目:

1.投注是从红色球号码中选择6个号码(不能重复),从蓝色球号码中选择1个号码,组合为一注投注号码的投注
2.红色球号码为[1-33],蓝色球号码为[1-16]
3.开奖号码和购彩者号码均随机生成,红球按照从小到大的顺序进行排列,最后额外加入蓝色球
1 2 3 4 5 6 + 1
注意:蓝色球不参与整体的顺序
4.中奖规则如下:
一等奖: 红球6 + 蓝球1
二等奖: 红球6
三等奖: 红球5 + 蓝球1
四等奖: 红球5 或 (红球4 + 蓝球1)
五等奖: 红球4 或 (红球3 + 蓝球1)
六等奖: (红球2 + 蓝球1) 或 (红球1 + 蓝球1) 或 蓝球1

大体思路:

1.使用TreeSet接收红球生成的随机数,可以保证不重复而且会自然排序

2.蓝球由于数量较少,使用String接收

3.中奖只要对应位置的数据一致就好了,可以使用遍历数组进行对比,使用count接收一致的数据个数

4.通过count确认得到几等奖

代码:

public class redAndBlueBall {
    public static void main(String[] args) {

        //使用TreeSet用来存储生成的数据,其存入的数据不可重复,且存入数据后自动进行自然排序
        Collection<Integer> redBall = new TreeSet<>();

        //有6个红球,每个红球的数据都要不一样,有时候会出现相同的数据导致集合缺少数据,所以使用循环限制使其仅输出不同的6个数据
        while (redBall.size() <= 5) {
            redBall.clear();
            redBall.add((int) (Math.random() * 33 + 1));
            redBall.add((int) (Math.random() * 33 + 1));
            redBall.add((int) (Math.random() * 33 + 1));
            redBall.add((int) (Math.random() * 33 + 1));
            redBall.add((int) (Math.random() * 33 + 1));
            redBall.add((int) (Math.random() * 33 + 1));
        }

        //使用ArrayList来存储生成的数据,方便后续调用get方法
        ArrayList<Integer> array = new ArrayList<>(redBall);


        //蓝球的数据因为就一个,所以我就使用String接收了,用集合也没有问题
        String blueBall = new String((int) (Math.random() * 16 + 1) + "");
        System.out.println("红球号码为:" + array);
        System.out.println("蓝球号码为:" + blueBall);

        //从系统输入选择购买的号码
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入所选红球:");
        int custRed1 = scan.nextInt();
        int custRed2 = scan.nextInt();
        int custRed3 = scan.nextInt();
        int custRed4 = scan.nextInt();
        int custRed5 = scan.nextInt();
        int custRed6 = scan.nextInt();
        System.out.println("请输入所选蓝球:");
        String custBlue = scan.next();

        //使用ArrayList接收输入的红球数据,方便后续调用get方法
        ArrayList<Integer> custBall = new ArrayList<Integer>();
        custBall.add(custRed1);
        custBall.add(custRed2);
        custBall.add(custRed3);
        custBall.add(custRed4);
        custBall.add(custRed5);
        custBall.add(custRed6);
        System.out.println(custBall);

        //遍历集合,如果集合相同位置的数据相同,则使count+1
        int count = 0;
        for (int i = 0; i < custBall.size(); i++) {
            if (array.get(i).equals(custBall.get(i))) {
                count++;
            }
        }

        //根据题目要求判断为几等奖
        switch (count) {
            case 6:
                if (blueBall.equals(custBlue)) {
                    System.out.println("中一等奖");
                    break;
                } else {
                    System.out.println("中二等奖");
                    break;
                }
            case 5:
                if (blueBall.equals(custBlue)) {
                    System.out.println("中三等奖");
                    break;
                } else {
                    System.out.println("中四等奖");
                    break;
                }
            case 4:
                if (blueBall.equals(custBlue)) {
                    System.out.println("中四等奖");
                    break;
                } else {
                    System.out.println("中五等奖");
                    break;
                }
            case 3:
                if (blueBall.equals(custBlue)) {
                    System.out.println("中五等奖");
                    break;
                }
            case 2:
            case 1:
                if (blueBall.equals(custBlue)) {
                    System.out.println("中六等奖");
                    break;
                }
            default:
                System.out.println("对不起您没有中奖");
        }
    }
}

本人错误思路:

将红球数据生成后存入String中,调用String的截取方法,试用两个字符串最大公共部分的方法找到公共部分,公共部分的长度/2即为中奖号码个数。

思路问题:没考虑到数据长度可能为个位数,且截取数据两边可能有相等数据。

 

标签:双色球,Java,红球,System,案例,蓝球,println,custBall,out
From: https://www.cnblogs.com/life--/p/17020610.html

相关文章

  • 可视化 — D3学习笔记小小案例记录一下
    D3全称是Data-DrivenDocuments数据驱动文档,是一个开源的javascript库,可以用于数据可视化图形的创建,该库更接近底层,与g2、echarts不同,d3能直接操作svg,所以拥有极大的自......
  • 基于ThingsBoard二次开发的案例
    ThingsKit物联网平台,底层基于ThingsBoard开发:https://www.thingskit.com/......
  • 智捷教育关东升老师Java视频
    我的视频已经开放欢迎大家下载:智捷教育关东升老师Java视频​​http://www.ed2000.com/ShowFile.asp?FileID=186355​​​智捷教育关东升老师数据库视频​​http://www.ed2......
  • JavaScript 简单类型与复杂类型
    JavaScript简单类型与复杂类型目录JavaScript简单类型与复杂类型1.简单类型与复杂类型2.堆和栈3.简单类型的内存分配4.复杂类型的内存分配5.简单类型传参6.复杂类......
  • 谁是《Java编程思想》之后的巅峰?《On Java》申请出战!
    大家好,我是DD!2022年3月下旬的时候,Java已经更新到了18。年底SpringBoot3发布之后,也将Java基线定在了17,同时其他Java生态的中间件和框架也都在朝这一目标努力。但是,似乎我们......
  • Java Map实现按value排序
    JavaMap实现按value排序如果想按照key来排序,用TreeMap就可以;如果想实现按value排序,可以采用下面这种方式publicstaticvoidmain(String[]args){Map<St......
  • Springboot 整合 Dubbo/ZooKeeper 详解 SOA 案例
    一、为啥整合Dubbo实现SOADubbo不单单只是高性能的RPC调用框架,更是SOA服务治理的一种方案。核心:1.远程通信,向本地调用一样调用远程方法。2.集群容错3.服务自动发......
  • JavaScript 对象-三种创建对象的方式,遍历获取到对象。
    JavaScript对象-三种创建对象的方式,遍历获取到对象。目录JavaScript对象-三种创建对象的方式,遍历获取到对象。1.对象1.1什么是对象?1.2为什么需要对象2.创建对象的......
  • javascript基础&实战
    javascript基础&实战一、JS基础1.js编写位置1.在head中添加image-20221228102322887在body中的语句上添加不推荐使用image-202212281024536782.引入外部js文件i......
  • 【Java】Oshi 硬件信息读取库
    实现的功能:用于开发服务器监控面板,获取服务器硬件参数  官方Github仓库地址:https://github.com/oshi/oshi Maven坐标:<!--https://mvnrepository.com/arti......