使用集合实现彩票双色球,并进行比较判断是否中奖

需求:
                使用集合实现双色球模拟,并判断是否中奖
 双色球每注投注号码由6个红色球号码和1个蓝色球号码组成。
 红色球从1—33中随机生成6个不重复的号码;蓝色球号码从1—16中随机生成1个;
客户通过键盘录入购买的红色球6个(不重复)和蓝色球1个, 判断客户的中奖状况: 
1) 买中蓝色球, 红色球全部买中, 1等奖 
2) 买中蓝色球,红色球买中3-5个, 2等奖
3) 买中蓝色球, 红色球买中1个, 3等奖
4) 其余情况全部算作没有中奖
 要求 : 比较买中的红球时, 要求购买顺序也作为比较依据,购买顺序完全一致才算作买中红球个数

看到需求以后,我们首先确定使用哪种集合存放哪种球,需求里提到了红球需要时六个不重复的数字,注意这个 “不重复的数字” 既然提到了不重复,我们应该首先想到的是Set集合,因为Set集合是会去重的,我们的蓝球只有一个,所以不管他是用什么集合,想用的话直接用数组也是可以的,我们这里使用了ArrayList集合,接下来是随机生成的六个数字,很简单,我们只需要使用Random类就可以实现,然后就是根据需求确定随机数的生成范围就可以了,下面是代码

做好以上的几步,我们的随机数的集合就已经产生好了,接下来我们要做的就是创建我们的键盘输入,这里没有什么难度,唯一需要注意的是如果客户不听话,乱输入超过了取值范围,或者让他输入数字,非要输出字符串的情况,好办,我们只需要在适当的地方加入判断并且对可能出现问题的代码块进行异常的捕获(学习阶段使用的方式)代码如下;

 到目前为止我们已经可以看到中奖的号码与我们所输入的号码了,下面给客户添加一个“”小彩蛋”

(要是腹黑就让他等一分钟,再多就生气了)

元素随机生成和存储已经准备好了,我们自己输入的元素也准备好了,甚至小彩蛋都给到了,接下来也就来到了最关键的时刻了,也是我当时想了很就得一块,因为我们使用的是HashSet,我们要知道,HashSet是没有索引值的,所以我们没有办法直接取出他里面单个的元素进行比较,那怎么办呢,既然我们知道要提取出该元素需要此元素的索引值,那好办,我们让他有索引就好了啊,所以我们直接将HashSet转换为Object类型的数组(没有转成ArrayList的原因是反正也要转换,我们不如转换成我们熟悉的东西),转换为数组的HashSet就已经拥有了索引值,我们就可以将里面的值进行比较了,根据需求我们确定,中奖的前提是蓝色球相同,所以我们作出判断,只有在蓝色球相同的情况下才符合中奖的条件,不然肯定是没有中奖的(也要注意蓝色球相同,但是红色球有两个相同的情况),代码如下:

 以上就是我们的所有代码了。大家可以尝试进行另外几种情况的尝试

 

 

 

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
php双色球在线机选程序V1.0(支持复式机选) 运行环境: php5.0及以上 安装方法: 上传所有文件到服务器. 本人平生也经常购买福彩双色球,本人不相信所谓的规律,我只相信运气。 所以每次选号都是直接机选。后来时间长了,我觉得福彩的那个售票系统的机 选程序不够强大,应该也不是严格意义上的机选。所以决定用php写一个机选 的程序,于是自已起草了程序的基本需求如下: 分析双色球的玩法规则: 其实就是红色和蓝色组成的一组号码,红色的 数字范围为1~33,蓝色的范围为1~16,所以机选双色球的程序要考虑以下内容 : 1. 先机选出红色部份,也就是在数字1~33之间,随机取6个数字,而且这6个 数字不能重复,最后对这6个数字进行从小到大进行排序。这时候,我们已经产 生了双色球部份的6个号码。当然,如果是复式机选,红的个数则是 7~20个,所以如果是复式机选的话,红色的个数根据具体的个数在1~33中产 生具体个数的红色号码. 2.然后再机选出蓝色部份,也就是在数字1~16范围内,随机取1个数字.当然 如果是复式机选,则相应产生多个蓝色,也就是在数字1~16范围内,产生多 个不重复的号码 3.组合机选出来的红色和蓝色的号码,合并后进行输出。这样一注双色球 就产生了。 程序的核心算法和原理: 1.机选的实现: 红色部份,先将1~33这33个常数放在一个数组中,也就是这个数组中有33个 数组元素,然后将这个数组元素的排列,使用函数将其随机打乱,最后截取某 一段。 2.用户单式和复式的判断,以及用户注数的判断使用GET模式的URL传值进行赋 值。 本程序原是本人自用的程序,如果错误或BUG,请真指正。现将本程序进行开 放源代码,方便有需要有人进行使用和改进。 程序演示地址: http://www.12580.info/cp/ssq 程序的下载地址: 说明:如对CSS有造诣的同事,可以帮忙修改一下表单和网页样式,使其美观。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值