案例:java数组应用之双色球彩票案例的实现

    喜欢玩彩票的朋友们应该很多人都了解过双色球,也都希望通过500万的大奖改变自己的人生,今天我们就来利用java中的数组实现一个双色球的案例。

    双色球彩票的规则是这样的,中奖号码是5个红球和1个蓝球,红球从33个里边随机选出5个,蓝球从16个里边选出一个。

    好的,知道了他的规则之后我们就要开始分析,这里边红球的号码从1-33,所以我们要构建一个1-33的红球数组,并从中随机选取5个,所以又需要用到随机数,在选的时候还有一点需要注意,就是选中的红球是不能重复的,比如说第一次选中了3号求,那么剩下的几次选红球,就不可以在选3号球了,所以这里是一个难点,那么我们该怎么实现呢,就是在创建了33个红球的数组的同时,在创建一个和他长度相同的标记数组,里边的元素是布尔类型,如果一个球被选中,就把标志更改一下,下次在选球的时候,先看标记,如果标记是被选中的则继续选。这里边还要用到一个知识点就是随机数。这里我们使用Random这个类,通过里边的nextInt来获取随机数,next(20) 这个方法得到的就是从0到20之间的一个随机数,注意包括0,不包括20,所以当我们选择篮球的时候,是从1-16里边选择一个随机数,那么我们实际上可以使用nextInt(16)+1的方式来实现。好了,我们整理一个步骤。

        1. 构建一个int类型的红球数组,长度33,里边的元素,1--33

        2. 构建一个boolean类型的红球标志数组,长度33,里边的元素都是false

        3. 构建一个int类型的数组,长度是6,用来存放被选中红球

        4. 生成随机索引,相当于从数组中选球,每次选中一个球,先判断一个对应的标志数组,如果对应的是false,则说明该球可以使用,把他放到选中的数组中,同时把标记改为true,知道选中数组中的6个球都选完

        5. 生成蓝球的号码,就是得到一个1-16中的随机数

        6. 对红球数组做排序并打印最终结果。

好了,直接看代码

    

public class DoubleColorsBallDemo {

	public static void main(String[] args) {
		generateNum();//调用生成双色球号码的方法
	}
	
	public static void  generateNum(){
		int[] redBallPool = new int[33];//1.构建33个红球的数组
		boolean[] redBallFlag = new boolean[33];//2.构建红球标志数组
		Random  rm = new Random();
		for(int i=0;i<33;i++){
			redBallPool[i] = i+1;//给红球数组中放球,球从1号到33号
		}
		int[] choosenRedBall = new int[6];//3.构建红球的中奖号码数组
		int length = 0;//设置一个变量,来标记有几个红球被选中,每次找到一个符合的就加1
		while(length != 6){//开始选球
			int index = rm.nextInt(33);
			if(!redBallFlag[index]){//先判断球是否可用,即之前有没有被选中过
				redBallFlag[index] = true;//如果可用,先把他标记改一下,代表已经被选中过,不能再被选了
				choosenRedBall[length] = redBallPool[index];//存放到选中的数组中
				length++;//标记加1
			}
		}
		int blueBall = rm.nextInt(16)+1;//生成蓝球
		//排序,使用Arrays.sort();
		Arrays.sort(choosenRedBall);//对红球排序
		System.out.println("红球:"+Arrays.toString(choosenRedBall)+",蓝球"+blueBall);
	}
关于双色球的案例我们就介绍到这里,如果大家学了set其实实现起来会更简单,因为set本身就是一个不允许元素重复的集合。如果大家有其他疑问,可在文章下留言,如果觉得文章对自己的学习有帮助,请关注我的博客,后面会有更多的文章发布。 也可以添加qq群:767375013(请备注CSDN)。里边有更多的文档视频资料,及线上免费公开课。希望和大家一起探讨。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值