双色球案例

双色球奖规则

 这是双色球规则和条件,我们学完数组后就可以尝试实现这个案例了

本质上可以分成两个数组,然后选号码即为从数组里面取值,取出来后不重复

(实现的话可以取出来后赋值一个数,如果有后续再想随机数的话就会跳过,保证唯一性)

实现随机数的方法还是math工具类里面的random方法

我的代码

public class 双色球 {
	public static void main(String[] args) {
		// 定义一个存放用户输入的六个双色球红球的数组
		int[] redQ = new int[6];
		// 定义一个存放用户输入的一个双色球蓝球的数组
		int[] buleQ = new int[1];
		// 定义一个存放系统产生的六个双色球红球的数组
		int[] redCompute = new int[6];
		// 定义一个存放系统产生的一个双色球蓝球的数组
		int[] buleCompute = new int[1];

		// 系统获取双色球中奖号码
		// 设置双色球池子
		int[] redBall = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
				27, 28, 29, 30, 31, 32, 33 };
		/*
		 * 解法有问题 for (int i = 0; i < redBall.length; i++) { int i1; int i2=0; while
		 * (true) { i1=(int)Math.random()*100%33; if (redBall [i1]!=5) {
		 * redCompute[i]=redBall[i1]; i2++; if (i2==5) { for (int j = 0; j <
		 * redCompute.length; j++) { System.out.println(redCompute[j]); } break; } } } }
		 */
		// 循环将号码存进系统产生的红色球池子
		for (int i = 0; i < redCompute.length; i++) {
			int i1 = 0;
			// 如果有重复获取,那么就一直返回重新获取随机数
			while (true) {
				i1 = (int) (Math.random() * 33);
				if (redBall[i1] != -1) {
					// 将随机数存入池子
					redCompute[i] = redBall[i1];
					// 已经存了的号码用-1顶替,这样在while循环里面的if判断进不来
					redBall[i1] = -1;
					// 正确获得,则退出当前循环,回到上一级的for循环
					break;
				}
			}

		}
		int i2 = (int) (Math.random() * 16) + 1;
		buleCompute[0] = i2;
		// 作弊码,打印出红球号码
		System.out.println("=====测试码(作弊码)======");
		System.out.println(Arrays.toString(redCompute));
		// 作弊码,打印出蓝球号码
		System.out.println(Arrays.toString(buleCompute));

		// 用户端输入双色球号码
		System.out.print("请输入六个红色球号码(1~33):");
		Scanner red = new Scanner(System.in);
		for (int i = 0; i < redQ.length; i++) {
			redQ[i] = red.nextInt();
			System.out.println("输入的第" + (i + 1) + "红色球号码为" + redQ[i] + "\t");
		}
		System.out.println("请输入一个蓝色球号码(1~16)");
		Scanner bule = new Scanner(System.in);
		buleQ[0] = bule.nextInt();
		System.out.println("输入的蓝色球号码为" + buleQ[0]);
		// 设置红球和蓝球中奖个数
		int redcount = 0;
		int bulecount = 0;
		// 循环比对,如果用户的红球和系统的红球有一样的,则中奖次数加一
		for (int i = 0; i < redCompute.length; i++) {
			for (int j = 0; j < redQ.length; j++) {
				if (redCompute[i] == redQ[j]) {

					redcount++;
				}
			}
		}
		if (buleCompute[0] == buleQ[0]) {
			bulecount++;
		}
		// 结果比对
		System.out.print("中奖红色球号码" + Arrays.toString(redCompute) + "\t");
		System.out.println("中奖蓝色球号码" + Arrays.toString(buleCompute));
		System.out.print("用户红色球号码" + Arrays.toString(redQ) + "\t");
		System.out.println("用户蓝色球号码" + Arrays.toString(buleQ));
		System.out.println(redcount);
		System.out.println(bulecount);
		// 显示奖励等次
		if (redcount == 6 && bulecount == 1) {
			System.out.println("一等奖!奖金一千万!");
		} else if (redcount == 6 && bulecount == 0) {
			System.out.println("二等奖!奖金五百!");
		} else if (redcount == 5 && bulecount == 1) {
			System.out.println("三等奖!奖金一百万!");
		} else if (redcount == 5 || (redcount == 4 && bulecount == 1)) {
			System.out.println("四等奖!奖金一千块!");
		} else if (redcount == 4 || (redcount == 3 && bulecount == 1)) {
			System.out.println("五等奖!奖金一百块!");
		} else if ((redcount == 2 && bulecount == 1) || (redcount == 1 && bulecount == 1) || bulecount == 1) {
			System.out.println("六等奖!奖金十块!");
		} else {
			System.out.println("很遗憾没能中奖");
		}

	}

}

结果

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值