【题目介绍】

【题目详情】

将用户输入的竞猜号码与随机生成的号码进行比较,核算出红球和蓝球的竞猜结果,根据结果判断出用户的获奖情况。

【输入形式】

根据系统的交互提示,依次输入竞猜号码。

【输出形式】

系统会依次输出客户的红球竞猜结果和篮球竞猜结果,最后会输出彩票的获奖情况。

【思路】

  • 首先,我们会先随机生成红球号码和蓝球号码,并将这些号码存放到一个数组中。这里要求随机生成的红球号码存放到数组中时不能有重复的数字,并且要满足红球号码大于等于一并且小于等于三十三,蓝球号码大于等于一小于等于十六的生成条件
  • 接着要引导用户输入彩色双色球号码,并将这些号码存放到另一个数组中。在用户输入红球号码时要判断是否与之前输入的号码重复,如果重复则需要引导用户重复输入,直到输入了符合规范的号码。
  • 最后要将用户输入的号码和已经随机生成的号码进行比较生成竞猜结果和获奖结果。因为蓝球和红球的情况不一致,要单独比较蓝球的竞猜结果。将做后的竞猜结果和获奖情况进行比较,进而与获奖条件进行比较,输出用户是否获奖,获奖的话还要输出奖金多少

【代码实现】

  • 第一步,我们要随机生成号码,并且判断这些随机生成的号码是否符合条件

public  static int[] createNumber(){int[] arr=new int[7];Random r=new Random();for (int i = 0; i < 6; ) {int redNumber = r.nextInt(33) + 1;boolean flag = contains(arr, redNumber);if (!flag) {arr[i] = redNumber;i++;}}int blueNumber=r.nextInt(16)+1;arr[arr.length-1]=blueNumber;return arr;}

根据驼峰命名法命名随机生成号码的方法为 creatNumber ,在这个方法中,我们要用Random来生成随机出,并且要将生成的范围是一到三十三的随机数存放到一个素组中。在存放到数组中之前我们要判断数组中是否有一个数和生成的数重复,如果重复则需要重新生成,一直到有一个数不与已有数重复。蓝球号码的的随机生成因为只有一个则不需要判断是否重复。

注意:生成蓝球号码和红球号码时时分开的,因为篮球的范围和红球的范围不一样。

注意2:红球号码存放到数组的前六位中,蓝球号码存放到第七位中,后面的用户输入的情况也是如此

判断是否重复时,这里创建了一个新的方法,用来遍历存放随机数的数组,查看比较是否有重复的

 public static boolean contains(int[] arr,int number){for (int j : arr) {if (j == number) {return true;}}return false;}}

这个判断是否重复的方法理解起来很简单,主要就是遍历整个数组,挨个判断是否相同,如果有一个相同,则返回布尔型的true,如果遍历完整个数组没有找到相同的数,就说明没有相同的数已经存放到这个数组中,则返回false。

  • 第二步,引导用户输入用户的竞猜号码,并判断用户输入的号码是否符合条件

public static int[] userInputNumber(){int[] arr=new int[7];Scanner sc=new Scanner(System.in);for (int i = 0; i < 6; ) {System.out.println("请输入第"+(i+1)+"个红球号码");int redNumber=sc.nextInt();if(redNumber>=1&&redNumber<=33){boolean flag=contains(arr,redNumber);if(!flag){arr[i]=redNumber;i++;}else {System.out.println("当前红球号码已经存在,请重新输入");}}else {System.out.println("当前红球号码超出范围");}}while (true) {System.out.println("蓝球号码为:");int biueNumber=sc.nextInt();if(biueNumber>=1&&biueNumber<=16){arr[arr.length-1]=biueNumber;break;}else {System.out.println("当前蓝球号码超出范围,请重新输入");}}return arr;}

这段代码的主要目的是将用户输入的号码存放到一个数组中,然后将这个数组返回。代码较长,我们来分开查看代码。

int[] arr=new int[7];
Scanner sc=new Scanner(System.in);for (int i = 0; i < 6; ) {System.out.println("请输入第"+(i+1)+"个红球号码");int redNumber=sc.nextInt();if(redNumber>=1&&redNumber<=33){boolean flag=contains(arr,redNumber);if(!flag){arr[i]=redNumber;i++;}else {System.out.println("当前红球号码已经存在,请重新输入");}}else {System.out.println("当前红球号码超出范围");}}

先来看红球号码的输入。首先一个for循环,用来以次将用户输入的符合规范的数存放到一个数组中。这里要首先将用户输入的数进行一个判断,输入的数如果没有重复,则将该数存放到数组中,并且将数组的下标向后移位。输入的数如果不符合要求则将提示用户输入的数是超出了范围还是已存在。这里判断是否符合规范调用了之前已经写好的方法contains。

while (true) {System.out.println("蓝球号码为:");int biueNumber=sc.nextInt();if(biueNumber>=1&&biueNumber<=16){arr[arr.length-1]=biueNumber;break;}else {System.out.println("当前蓝球号码超出范围,请重新输入");}}

最后来看一下蓝球号码的输入。蓝球号码只有一个条件,那就是要在范围内,所以一个if判断语句结束判断。

  • 第三步,对随机生成的号码和用户输入的数进行判断,输出结果

        int[] arr=createNumber();System.out.println("***************************");for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+" ");}System.out.println();System.out.println("***************************");int[] userInputNumber=userInputNumber();int redCount=0;int blueCount=0;for (int i = 0; i < userInputNumber.length-1; i++) {int readNumber=userInputNumber[i];for (int j = 0; j <userInputNumber.length-1 ; j++) {if(readNumber==arr[j]){redCount++;break;}}}int blueNumber=userInputNumber[userInputNumber.length-1];if(blueNumber==arr[arr.length-1]){blueCount++;}System.out.println("红球中奖情况:");System.out.println(redCount);System.out.println("蓝球中奖情况:");System.out.println(blueCount);if(redCount==6&&blueCount==1) {System.out.println("恭喜你,中奖1000万");}else if(redCount==6&&blueCount==0){System.out.println("恭喜你,中奖500万");} else if (redCount==5&&blueCount==1) {System.out.println("恭喜你,中奖3000元");}else if ((redCount==5&&blueCount==0)||(redCount==4&&blueCount==1)) {System.out.println("恭喜你,中奖200元");}else if ((redCount==4&&blueCount==0)||(redCount==3&&blueCount==1)) {System.out.println("恭喜你,中奖10元");}else if ((redCount==2&&blueCount==1)||(redCount==1&&blueCount==1)||(redCount==0&&blueCount==1)){System.out.println("恭喜你,中奖5元");}else {System.out.println("谢谢参与,谢谢惠顾");}

这些代码我是放到了主函数中,没有重新创建。代码过长,拆开一次解析

int[] arr=createNumber();System.out.println("***************************");for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+" ");}System.out.println();System.out.println("***************************");
int[] userInputNumber=userInputNumber();

这一段代码主要是创建数组arr和数组userInputNumber,分别用来存放随机生成的一些号码和用户输入的号码。再次之间有一些输出,主要是用来检验的,在实际使用中可以适度删除

int redCount=0;
int blueCount=0;for (int i = 0; i < userInputNumber.length-1; i++) {int readNumber=userInputNumber[i];for (int j = 0; j <userInputNumber.length-1 ; j++) {if(readNumber==arr[j]){redCount++;break;}}}int blueNumber=userInputNumber[userInputNumber.length-1];if(blueNumber==arr[arr.length-1]){blueCount++;}

这一段代码主要是分别统计红球和篮球的中奖次数。红球中奖的条件是用户输入的号码和随机生成的红球号码中有一个相同就代表这个号码中奖了,redCount加一,所以要进行对随机生成的红球号码的数组进行遍历,当遇到相同的号码后直接break,跳出循环,进行下一个号码的检验。蓝球只有一个,只需要用if来判断就可以。

注意:遍历红球号码时,要注意红球号码是存在数组的前六个里,不用遍历第七个数组

System.out.println("红球中奖情况:");System.out.println(redCount);System.out.println("蓝球中奖情况:");System.out.println(blueCount);if(redCount==6&&blueCount==1) {System.out.println("恭喜你,中奖1000万");}else if(redCount==6&&blueCount==0){System.out.println("恭喜你,中奖500万");} else if (redCount==5&&blueCount==1) {System.out.println("恭喜你,中奖3000元");}else if ((redCount==5&&blueCount==0)||(redCount==4&&blueCount==1)) {System.out.println("恭喜你,中奖200元");}else if ((redCount==4&&blueCount==0)||(redCount==3&&blueCount==1)) {System.out.println("恭喜你,中奖10元");}else if ((redCount==2&&blueCount==1)||(redCount==1&&blueCount==1)||(redCount==0&&blueCount==1)){System.out.println("恭喜你,中奖5元");}else {System.out.println("谢谢参与,谢谢惠顾");}

这一段代码主要是输出竞猜结果并且依据竞猜结果进行判断,判断用户是中了几等奖,奖金多少

【全代码展示】

import java.util.Random;
import java.util.Scanner;public class Main {public static void main(String[] args) {int[] arr=createNumber();System.out.println("***************************");for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+" ");}System.out.println();System.out.println("***************************");int[] userInputNumber=userInputNumber();int redCount=0;int blueCount=0;for (int i = 0; i < userInputNumber.length-1; i++) {int readNumber=userInputNumber[i];for (int j = 0; j <userInputNumber.length-1 ; j++) {if(readNumber==arr[j]){redCount++;break;}}}int blueNumber=userInputNumber[userInputNumber.length-1];if(blueNumber==arr[arr.length-1]){blueCount++;}System.out.println("红球中奖情况:");System.out.println(redCount);System.out.println("蓝球中奖情况:");System.out.println(blueCount);if(redCount==6&&blueCount==1) {System.out.println("恭喜你,中奖1000万");}else if(redCount==6&&blueCount==0){System.out.println("恭喜你,中奖500万");} else if (redCount==5&&blueCount==1) {System.out.println("恭喜你,中奖3000元");}else if ((redCount==5&&blueCount==0)||(redCount==4&&blueCount==1)) {System.out.println("恭喜你,中奖200元");}else if ((redCount==4&&blueCount==0)||(redCount==3&&blueCount==1)) {System.out.println("恭喜你,中奖10元");}else if ((redCount==2&&blueCount==1)||(redCount==1&&blueCount==1)||(redCount==0&&blueCount==1)){System.out.println("恭喜你,中奖5元");}else {System.out.println("谢谢参与,谢谢惠顾");}}public static int[] userInputNumber(){int[] arr=new int[7];Scanner sc=new Scanner(System.in);for (int i = 0; i < 6; ) {System.out.println("请输入第"+(i+1)+"个红球号码");int redNumber=sc.nextInt();if(redNumber>=1&&redNumber<=33){boolean flag=contains(arr,redNumber);if(!flag){arr[i]=redNumber;i++;}else {System.out.println("当前红球号码已经存在,请重新输入");}}else {System.out.println("当前红球号码超出范围");}}while (true) {System.out.println("蓝球号码为:");int biueNumber=sc.nextInt();if(biueNumber>=1&&biueNumber<=16){arr[arr.length-1]=biueNumber;break;}else {System.out.println("当前蓝球号码超出范围,请重新输入");}}return arr;}public  static int[] createNumber(){int[] arr=new int[7];Random r=new Random();for (int i = 0; i < 6; ) {int redNumber = r.nextInt(33) + 1;boolean flag = contains(arr, redNumber);if (!flag) {arr[i] = redNumber;i++;}}int blueNumber=r.nextInt(16)+1;arr[arr.length-1]=blueNumber;return arr;}public static boolean contains(int[] arr,int number){for (int j : arr) {if (j == number) {return true;}}return false;}}

【效果图如下】

双色球彩票系统(java)相关推荐

  1. Java如何模拟双色球彩票系统?

    Java模拟双色球彩票系统 1. 功能介绍 2. 代码展示 总结 1. 功能介绍 投注号码由6个红球号码和1个蓝球号码组成,红球号码从1-33中选择,蓝球号码从1-16中选择 2. 代码展示 代码如下 ...

  2. JAVA练习题16:双色球彩票系统

    双色球彩票系统 规则:投注号码由6个红色球号码和1个蓝色球号码组成.红色球号码从1-33中选择:蓝色球号码从1-16中选择.红色球号码不能互相重复,蓝色球号码可以和红色球相同 中奖条件:只要满足红球和 ...

  3. 利用python写一个简单的双色球彩票系统

    利用python写一个简单的双色球彩票系统 1.设置每次买的号码一样 写一个双色球彩票系统,系统可以随机产生一组数据,一组彩票数据有六位数,这六位数的的取值范围是0和1. 一张彩票是两块钱,用户可以选 ...

  4. Python 双色球彩票系统

    Python 双色球彩票系统 双色球彩票系统,系统可以随机产生一组数据,一组彩票数据有六位数,这六位数的的取值范围是0和1.一张彩票是两块钱,用户可以选择购买彩票的张数,若余额充足,用户可以开始游戏, ...

  5. C/C++项目开发:双色球彩票系统!C语言告诉你中奖并不是偶然!

    https://www.bilibili.com/video/BV1uh411D7Wh/?spm_id_from=333.999.0.0&vd_source=ddb210d09ec373c5d ...

  6. 双色球彩票系统升级版

    彩票系统 1.提醒"欢迎进入***抽奖系统"  双色球   请选择: 充值 查看账户资金 开始购买彩票 开奖 查看当前购买的彩票 退出系统 2.充值  用户自己录入充值金额,显示充 ...

  7. 学习心得——双色球彩票系统

    1.使用到了一个数组存储随机生成的双色球号码 2.使用了一个字符串数组,通过空格来隔开每一个用户输入的号码,然后使用强转将其存储到用户数组里 3.通过统计用户中奖号码的个数,进行奖项的判断 4.使用了 ...

  8. java---双色球彩票系统

    双色球玩法说明 双色球投注区分为红球号码区和蓝球号码区,红球号码范围为01-33,蓝球号码范围为01-16.双色球每期从33个红球中开出6个号码,从16个蓝球中开出1个号码作为中奖号码,双色球玩法即是 ...

  9. Java基础之双色球彩票玩法

    一.双色球彩票玩法 玩法说明: 双色球投注区分为红球号码区和蓝球号码区,红球号码范围为01-33,蓝球号码范围为01-16.双色球每期从33个红球中开出6个号码,从16个蓝球中开出1个号码作为中奖号码 ...

最新文章

  1. 国产AI芯片加速,鲲云携手浪潮推出数据流AI服务器
  2. 让一个网页打开的同时自动为另一个网页自动填写表单并提交
  3. Storyboard里面的几种Segue区别及视图的切换:push,modal,popover,replace和custom
  4. 文末福利|云原生下Java的变化与趋势?程序员为什么不喜欢低代码?答案在这里!...
  5. 排队问题解题思路_三大策略、5个技巧,完美解决超市收银排队难题
  6. 使用MyEclipse将HTML5移动项目迁移到PhoneGap(一)
  7. 管道( Pipeline )模型--示例
  8. OpenCV3学习(11.3)关键点的描述符KeyPoint对象与匹配类DMatch
  9. 《IT项目管理那些事儿》——新浪微博抽奖活动
  10. linux清理缓存_自动清理linux系统内存和Cache方法
  11. c++接口与实现的分离
  12. 搞科研身体才是革命的本钱。
  13. php中对象是引用类型吗?
  14. 炸弹人 炸弹爆炸 c语言_发展恐怖故事–邮件炸弹
  15. 【知识点总结】自动控制原理(自控)
  16. 【寒江雪】Go实现工厂模式
  17. 利用Python写个新年贺卡生成器,提前祝大家小伙伴们新年快乐呀~
  18. 数据中台在企业数字化转型中的践行(上篇)
  19. 初学makefile
  20. u-boot中nand相关命令使用---- ubi, ubifsls, ubifsmount, ubifsumount

热门文章

  1. day04-图片、列表、超链接标签及属性
  2. python3.9安装wordcloud报错:ERROR: Command errored out with exit status 1: ....
  3. 计算机世界报约稿,#约稿# 柯洁不行?中国计算机围棋科学家组团挑战AlphaGo...
  4. 推荐几个免费发布文章的网站
  5. 浅谈模式 - 桥梁模式
  6. Python爬虫 scrapy框架 爬取智联招聘,并把数据存入数据库,存为json格式的数据
  7. 牛逼!“京东热” 框架 JD-hotkey 开源了...单机 QPS 可达 37 万!!
  8. uboot 网络驱动模型
  9. 这个时代的三个大坑,你踩过哪一个?
  10. 科大讯飞:我们和华为基因相似,板凳能坐十年冷,如今向C端强劲发力