模拟双色球系统——Java

news2024/10/6 4:10:55

目录

一、内容简介

二、 基本流程

 三、具体步骤

1.菜单栏 

2.随机生成幸运号码 

3.用户输入 

4.判断中奖情况 

5.打印数组

 四、代码实现

五、效果展示


一、内容简介

双色球是彩票的一种玩法,规则如下:

  1. 红球一共6组,每组从1——33中随机抽取抽取,互不重复。
  2. 蓝球是从1——16中随机抽取一个数。
  3. 一共7个数字组成双色球的幸运号码。

下面是一张中奖规则图。

 

二、 基本流程

  1. 生成幸运随机号码。前6位从1——33中随机选择,不能重复;最后一位从1——16中选择(可与前6个数字重复)。
  2. 用户输入7位数字,如果不符合规则,要重新输入。
  3. 判断中奖情况,并输出命中红球和蓝球个数。

 三、具体步骤

1.菜单栏 

 public static void menu()
    {
        System.out.println("**************************************************************");
        System.out.println("            欢迎来到双色球,开启你的财富之旅~~~            ");
        System.out.println("**************************************************************");
        System.out.println("游戏规则如下:");
        System.out.println("--------------------------------------------------------------");
        System.out.println("前6个红球请从1————33中选择,红球不能重复;第7个蓝球请从1————16中选择。");
        System.out.println("--------------------------------------------------------------");

        System.out.println("以下是中奖规则:");
        System.out.println("--------------------------------------------------------------");

        System.out.println("一等奖:红球6个+蓝球1个,奖金100万");
        System.out.println("二等奖:红球6个+蓝球0个,奖金500万");
        System.out.println("三等奖:红球5个+蓝球1个,奖金3000元");
        System.out.println("四等奖:红球5个+蓝球0个;红球4个+蓝球1个,奖金200元");
        System.out.println("五等奖:红球4个+蓝球0个;红球3个+蓝球1个,奖金10元");
        System.out.println("六等奖:红球2个+蓝球1个;红球1个+蓝球1个;红球0个+蓝球1个,奖金5元");
        System.out.println("-------------------------------------------------------------");
    }

2.随机生成幸运号码 

/**
     * 随机生成幸运号码
     * @return 相应的数组
     */
    public static int[] LuckyNumber()//随机生成幸运号码
    {
        int[] arr = new int[7];
        Random ran = new Random();
        for (int i = 0; i < arr.length - 1; i++) {//随机生成六个不重复的红球号码
            while (true) {
                int code = ran.nextInt(33) + 1;
                boolean flag = true;
                for (int j = 0; j < i; j++) {
                    if (arr[j] == code) {
                        flag = false;
                        break;
                    }
                }
                if (flag) {
                    arr[i] = code;
                    break;
                }
            }
        }
        arr[arr.length - 1] = ran.nextInt(16) + 1;//蓝球号码
        return arr;
    }

3.用户输入 

/**
     * 用户输入
     * @return 相应的数组
     */
    public static int[] UsersNumber()//用户输入号码
    {
        int[] arr = new int[7];
        Scanner sca = new Scanner(System.in);
        for (int i = 0; i < arr.length - 1; i++) //6个红球号码
        {
            System.out.println("请输入第" + (i + 1) + "个号码");
            while (true) {
                int number = sca.nextInt();
                if (number >= 1 && number <= 33) {
                    arr[i] = number;
                    break;
                } else {
                    System.out.println("该号码无效,请重新输入!!!");
                }
            }
        }
        System.out.println("请输入第" + (arr.length) + "个号码");
        while (true) {
            int BlueNumber = sca.nextInt();
            if (BlueNumber >= 1 && BlueNumber <= 16) {
                arr[arr.length - 1] = BlueNumber;
                break;
            } else {
                System.out.println("该号码无效,请重新输入!!!");
            }
        }
        return arr;
    }

4.判断中奖情况 

/**
     * 判断中奖情况
     * @param lucknumber 幸运数字的数组
     * @param usersnumber 输入的数组
     */
    
    public static void compare(int[] lucknumber, int[] usersnumber)//判断中奖情况
    {
        int rednumber = 0;
        int bluenumber = 0;
        for (int i = 0; i < usersnumber.length - 1; i++) {
            for (int j = 0; j < lucknumber.length - 1; j++) {
                if (usersnumber[i] == lucknumber[j]) {
                    rednumber++;
                    break;
                }
            }
        }
        if (lucknumber[lucknumber.length - 1] == usersnumber[usersnumber.length - 1])
            bluenumber++;
        //输出命中情况
        System.out.println("您命中的红球个数:" + rednumber);
        System.out.println("您命中的蓝球个数:" + bluenumber);

        if (bluenumber == 1 && rednumber < 3) {
            System.out.println("恭喜您,中了5元!!!");
        } else if (bluenumber == 1 && rednumber == 3
                || bluenumber == 0 && rednumber == 4) {
            System.out.println("恭喜您,中了10元!!!");
        } else if (bluenumber == 1 && rednumber == 4
                || bluenumber == 0 && rednumber == 5) {
            System.out.println("恭喜您,中了200元!!!");
        } else if (bluenumber == 1 && rednumber == 5) {
            System.out.println("恭喜您,中了300元!!!");
        } else if (bluenumber == 0 && rednumber == 6) {
            System.out.println("恭喜您,中了500万!!!");
        } else if (bluenumber == 1 && rednumber == 6) {
            System.out.println("恭喜您,中了1000万!!!");
        } else
            System.out.println("很遗憾,您没能中奖~~~");
    }
}

5.打印数组

注:这只是初学的时候使用的方法。

可以使用Arrays.toString()方法直接输出

public static void Print(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("]");
    }

 四、代码实现

import java.util.Random;
import java.util.Scanner;

public class lottery {
    public static void main(String[] args)//双色球系统开发
    {
        while (true) {
            menu();
            int[] lucky = LuckyNumber();
            int[] users = UsersNumber();
            System.out.println("-------------------------------------------------------------");
            System.out.println("请用户输入号码");
            System.out.println("投注号码是:");
            Print(users);
            System.out.println("中奖号码是:");
            Print(lucky);
            compare(lucky, users);
            System.out.println();
            System.out.println();
            System.out.println();
        }
    }

    public static void menu() {
        System.out.println("**************************************************************");
        System.out.println("            欢迎来到双色球,开启你的财富之旅~~~            ");
        System.out.println("**************************************************************");
        System.out.println("游戏规则如下:");
        System.out.println("--------------------------------------------------------------");
        System.out.println("前6个红球请从1————33中选择,红球不能重复;第7个蓝球请从1————16中选择。");
        System.out.println("--------------------------------------------------------------");

        System.out.println("以下是中奖规则:");
        System.out.println("--------------------------------------------------------------");

        System.out.println("一等奖:红球6个+蓝球1个,奖金100万");
        System.out.println("二等奖:红球6个+蓝球0个,奖金500万");
        System.out.println("三等奖:红球5个+蓝球1个,奖金3000元");
        System.out.println("四等奖:红球5个+蓝球0个;红球4个+蓝球1个,奖金200元");
        System.out.println("五等奖:红球4个+蓝球0个;红球3个+蓝球1个,奖金10元");
        System.out.println("六等奖:红球2个+蓝球1个;红球1个+蓝球1个;红球0个+蓝球1个,奖金5元");
        System.out.println("-------------------------------------------------------------");
    }

    public static void Print(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("]");
    }

    /**
     * 随机生成幸运号码
     * @return 相应的数组
     */
    public static int[] LuckyNumber()//随机生成幸运号码
    {
        int[] arr = new int[7];
        Random ran = new Random();
        for (int i = 0; i < arr.length - 1; i++) {//随机生成六个不重复的红球号码
            while (true) {
                int code = ran.nextInt(33) + 1;
                boolean flag = true;
                for (int j = 0; j < i; j++) {
                    if (arr[j] == code) {
                        flag = false;
                        break;
                    }
                }
                if (flag) {
                    arr[i] = code;
                    break;
                }
            }
        }
        arr[arr.length - 1] = ran.nextInt(16) + 1;//蓝球号码
        return arr;
    }

    /**
     * 用户输入
     * @return 相应的数组
     */
    public static int[] UsersNumber()//用户输入号码
    {
        int[] arr = new int[7];
        Scanner sca = new Scanner(System.in);
        for (int i = 0; i < arr.length - 1; i++) //6个红球号码
        {
            System.out.println("请输入第" + (i + 1) + "个号码");
            while (true) {
                int number = sca.nextInt();
                if (number >= 1 && number <= 33) {
                    arr[i] = number;
                    break;
                } else {
                    System.out.println("该号码无效,请重新输入!!!");
                }
            }
        }
        System.out.println("请输入第" + (arr.length) + "个号码");
        while (true) {
            int BlueNumber = sca.nextInt();
            if (BlueNumber >= 1 && BlueNumber <= 16) {
                arr[arr.length - 1] = BlueNumber;
                break;
            } else {
                System.out.println("该号码无效,请重新输入!!!");
            }
        }
        return arr;
    }

    /**
     * 判断中奖情况
     * @param lucknumber 幸运数字的数组
     * @param usersnumber 输入的数组
     */

    public static void compare(int[] lucknumber, int[] usersnumber)//判断中奖情况
    {
        int rednumber = 0;
        int bluenumber = 0;
        for (int i = 0; i < usersnumber.length - 1; i++) {
            for (int j = 0; j < lucknumber.length - 1; j++) {
                if (usersnumber[i] == lucknumber[j]) {
                    rednumber++;
                    break;
                }
            }
        }
        if (lucknumber[lucknumber.length - 1] == usersnumber[usersnumber.length - 1])
            bluenumber++;
        //输出命中情况
        System.out.println("您命中的红球个数:" + rednumber);
        System.out.println("您命中的蓝球个数:" + bluenumber);

        if (bluenumber == 1 && rednumber < 3) {
            System.out.println("恭喜您,中了5元!!!");
        } else if (bluenumber == 1 && rednumber == 3
                || bluenumber == 0 && rednumber == 4) {
            System.out.println("恭喜您,中了10元!!!");
        } else if (bluenumber == 1 && rednumber == 4
                || bluenumber == 0 && rednumber == 5) {
            System.out.println("恭喜您,中了200元!!!");
        } else if (bluenumber == 1 && rednumber == 5) {
            System.out.println("恭喜您,中了300元!!!");
        } else if (bluenumber == 0 && rednumber == 6) {
            System.out.println("恭喜您,中了500万!!!");
        } else if (bluenumber == 1 && rednumber == 6) {
            System.out.println("恭喜您,中了1000万!!!");
        } else
            System.out.println("很遗憾,您没能中奖~~~");
    }
}

五、效果展示

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/30649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信h5 使用jssdk支付成功后,点击完成 页面关闭了,引出微信“点金计划“

可能会迷惑 为啥我们之前没有碰见过这种情况! 这样的情况只有两种情况,就是 你只是普通商户不是微信特约商户你的支付跳转功能还未被微信回收 那么怎么才能支付成功重新跳回自己的网站页面 刚开始经历这种情况的童鞋, 可能有点懵逼 先看个微信的之前发的一个公告吧 微信支付公…

面试系列分布式事务:谈谈3PC的理解

3PC就是三阶段提交是在二阶段提交上的改进版本&#xff0c;3PC最关键要解决的就是协调者和参与者同时挂掉的问题&#xff0c;所以3PC把2PC的准备阶段再次一分为二&#xff0c;这样三阶段提交。处理流程如下 &#xff1a; 阶段一 a) 协调者向所有参与者发出包含事务内容的 canCo…

【深入浅出Java并发编程指南】「实战篇」教你如何使用AbstractQueuedSynchronizer实现自己的同步器组件

前提概要 之前的文章中会涉及到了相关AQS的原理和相关源码的分析&#xff0c;所谓实践是检验真理的唯一标准&#xff01;接下来就让我们活化一下AQS技术&#xff0c;主要针对于自己动手实现一个AQS同步器。 定义MyLock实现Lock Doug Lea大神在JDK1.5编写了一个Lock接口&#xf…

【C++】模拟实现STL容器:vector

目录 一、vector迭代器失效问题 1、Visual Studio和g对迭代器失效问题的表现 2、解决迭代器失效的方法 二、模拟实现构造函数调用不明确 1、问题描述 2、解决调用不明确的方法 三、reserve中的深浅拷贝问题 1、reserve中浅拷贝发生原因 2、浅拷贝发生的图解 3、解决方…

vue.js毕业设计,基于vue.js前后端分离外卖点餐系统设计与实现(H5移动项目)

功能介绍 【后台管理员功能】 会员列表&#xff1a;查看所有注册会员信息&#xff0c;支持删除 录入资讯&#xff1a;录入资讯标题、内容等信息 管理资讯&#xff1a;查看已录入资讯列表&#xff0c;支持删除和修改 广告设置&#xff1a;上传图片和设置小程序首页轮播图广告地…

用Python代码画世界杯吉祥物拉伊卜(附代码)

用Python代码画世界杯吉祥物拉伊卜&#xff08;附代码&#xff09; 世界杯正在火热进行中&#xff0c;世界杯的吉祥物拉伊卜也非常火。 本文用Python代码画世界杯吉祥物。不废话&#xff0c;可以直接先看视频效果。 视频效果 用Python代码画世界杯吉祥物拉伊卜实现方法介绍 …

运用滤波反投影的方法对图像进行重建matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 直接由正弦图得到反投影图像&#xff0c;会存在严重的模糊&#xff0c;这是早期 CT 系统所存在的问题。傅立叶中心切片定理表明&#xff0c;投影的一维傅立叶变换是得到投影区域的二维傅…

360安全卫士弹窗广告怎么彻底关闭

如何关闭360广告弹窗&#xff1f;有时候我们在电脑上看一些视频或者整理一些文件时&#xff0c;经常莫名其妙会出现一些广告弹窗&#xff0c;即使是关了也还会出现&#xff0c;很是影响用户体验感&#xff0c;那么怎么彻底关闭呢&#xff1f;下面给大家介绍具体教程&#xff0c…

【单目3D目标检测】GUPNet论文精读与代码解析

文章目录PrefaceAbstractContributionsPipelineBackboneNeckHeadLossGUPIn PaperIn CodeHTLIn PaperIn CodeRefernecePreface Lu Y, Ma X, Yang L, et al. Geometry uncertainty projection network for monocular 3d object detection[C]. Proceedings of the IEEE/CVF Intern…

ActivitiListener

ActivitiListener目录概述需求&#xff1a;设计思路实现思路分析1.ActivitiListener2.Activity3.Gateway5.FieldExtensionIOSpecification参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip ha…

骨传导原理是什么?哪些骨传导耳机值得入手

​骨传导耳机是目前耳机市场比较流行耳机&#xff0c;深受年轻一族和运动达人的喜爱。但尽管这种产品受到很多人的青睐&#xff0c;相较传统耳机&#xff0c;大众对骨传导耳机的认识和程度并不高&#xff0c;也有很多小伙伴不知道骨传导耳机的原理是怎么发声的&#xff0c;骨传…

Vue子组件传自定义属性给父组件

我们知道组件之间是不能够之间进行通信的&#xff0c;都是相互独立的&#xff0c;你用不了我的状态和方法&#xff0c;我也用不了你的&#xff0c;那如何实现通信呢&#xff0c;可以间接实现&#xff1b; 实现父组件和子组件的通信&#xff1a; 子组件想用父组件的状态需要父…

Java并发之线程池

文章目录前言一、Java中线程池概览1.1 类图1.2 内部流程图二、源码探索2.1 构造参数2.2 线程池状态2.3 Worker 的添加和运行2.4 阻塞队列2.5 任务拒绝策略三、实际使用3.1 动态线程池3.2 拓展使用3.3 springboot 中线程池参考前言 在高并发的 Java 程序设计中&#xff0c;编写…

数字化安全生产平台 DPS 重磅发布

11 月 5 日&#xff0c;在 2022 杭州 云栖大会上&#xff0c;数字化安全生产平台 DPS 重磅发布&#xff0c;助力传统运维向 SRE 转型。 阿里巴巴资深技术专家 周洋 十四五规划下&#xff0c;各行各业全面加速数字化转型与升级。随着企业数字化业务规模变大&#xff0c;迭代速…

Dubbo服务远程调用的简介及使用教程

一、Dubbo的简介 Dubbo是阿里巴巴公司开源的一个高性能、轻量级的 Java RPC 框架。 致力于提供高性能和透明化的 RPC 远程服务调用方案&#xff0c;以及 SOA 服务治理方案。 官网&#xff1a;https://dubbo.apache.org/ SOA架构&#xff1a;&#xff08;Service-Oriented Arch…

华为云RDS数据库测评:性能超出预期,双11优惠还在继续

一、前言 作为一名电商行业公司的员工&#xff0c;深刻体会到系统大压力、高并发下保证服务的正常使用是多么严峻的挑战。双11这段时间&#xff0c;因为激增的使用量让我们的数据库服务严重吃紧&#xff0c;压力特别的大&#xff0c;甚至还出现了交易漏单&#xff0c;脏数据等…

【Servlet】3:Servlet 的基本原理、Servlet对象的生命周期

目录 第五章 | 动态资源与Servlet | 章节概述 | Tomcat与Servlet的 原理、关系 Tomcat的基本构成​编辑 Server处理HTTP请求 Connector内部架构分析 Container内部架构分析 Tomcat的执行流程小结 | Servlet 概述、接口实现 Servlet的基本概述 实现Servlet接口并通过U…

LeetCode HOT 100 —— 10.正则表达式匹配

题目 给你一个字符串 s 和一个字符规律 p&#xff0c;请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。 ‘.’ 匹配任意单个字符 ‘*’ 匹配零个或多个前面的那一个元素 所谓匹配&#xff0c;是要涵盖 整个 字符串 s的&#xff0c;而不是部分字符串。 思路 对于字符串…

11月24日国产蓝牙AOA高精度定位vs国外知名厂家的蓝牙aoa定位效果的展示

11月24日国产蓝牙AOA高精度定位vs国外知名厂家的蓝牙aoa定位效果的展示 11月24日国产蓝牙AOA高精度定位vs国外知名厂家的蓝牙aoa定位效果的展示

操作系统的基本概念

文章目录一、操作系统的概念1.什么是操作系统&#xff1f;2 计算机系统的构成3 系统软件的概念4 操作系统的主要作用二、操作系统目标和功能1. 目标1.1 有效性1.2 方便性1.3 可扩充性1.4 开放性2. 功能2.1 作为系统资源的管理者2.2 作为用户与计算机[硬件系统]之间的接口2.3 实…