Java实现双色球案例

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

/**
 * 彩票店销售双色球案例:
系统生成双色球:
    6颗红球(33选1)  1颗蓝球(16选1) ,要求6颗红球不重复
客户购买双色球:
    要求客户键盘输入,6个红球号码(1-33),1个蓝球号码(1-16)
验证客户购买是否中奖
 1) 6个红球和1个篮球全部买中,一等奖,1000万
 2) 买中1个蓝球,3-5个红球,二等奖,500万
 3) 买中1个篮球,1个红球,三等奖,100万
 4) 买中1个篮球,没买中红球,3等奖,50万
 5) 剩下情况没中奖
 * @author Mango_bin
 *
 */
public class DoubleColorBall {
	public static void main(String[] args) {
		// 1. 获取到系统的一个蓝球 : 1-16中任意出一个
		Random ran = new Random();
		// xtBlue表示系统的蓝球
		int xtBlue = ran.nextInt(16) + 1;// 1-16
		System.out.println("系统生成的蓝球为:" + xtBlue);
		// 2. 准备1-33的元素内容的数组,用于进行不重复数据的筛选
		int[] ready = new int[33];
		for (int i = 0; i < ready.length; i++) {
			ready[i] = i + 1;
		}
		// 3. 获取到系统中6个红球,不重复
		// xtRed表示系统的红球
		int[] xtRed = new int[6];
		for (int i = 0; i < xtRed.length; i++) {
			// 向数组中添加6个红球
			int sj = ran.nextInt(33) + 1;// 1-33 0-32
			if (ready[sj - 1] != 0) {// 不重复
				// 将不重复的元素赋值给红球
				xtRed[i] = sj;
				// 将已经筛选过的元素在数组中置为0, 表示下一次不能再进入红球中
				ready[sj - 1] = 0;
			} else {// 抽到重复的球,循环退一次
				i--;
			}
		}
		Arrays.sort(xtRed);
		System.out.println("系统生成的红球为:" + Arrays.toString(xtRed));
		// 4. 客户买一个蓝球
		Scanner sc = new Scanner(System.in);
		// khBlue表示客户购买的一个蓝球
		int khBlue;
		while (true) {
			System.out.println("请客户输入1-16的蓝球:");
			khBlue = sc.nextInt();
			if (khBlue > 0 && khBlue <= 16) {
				break;
			}
		}
		System.out.println("客户输入的一个蓝球为:" + khBlue);
		// 5. 获取到客户输入的6个红球
		int[] khRed = new int[6];
		for (int i = 0; i < khRed.length; i++) {
			System.out.println("请客户输入1-33的红球:目前输入了第" + (i + 1) + "次");
			int kh = sc.nextInt();
			if (kh > 0 && kh <= 33) {
				khRed[i] = kh;
			} else {
				i--;
			}
		}
		Arrays.sort(khRed);
		System.out.println("客户购买的红球为:" + Arrays.toString(khRed));
		// 6. 验证是否中奖
		if (xtBlue == khBlue) {// 蓝球买中
			// 验证买中了几个红球
			// 表示买中的红球的个数
			int count = 0;
			for (int i = 0; i < xtRed.length; i++) {
				for (int j = 0; j < khRed.length; j++) {
					System.out.println("i---------" + xtRed[i]);
					System.out.println("j---------" + khRed[j]);
					if (xtRed[i] == khRed[j]) {
						count++;
						break;
					}
				}
			}
			System.out.println("买中的红球为:" + count);
			if (count == 6) {
				System.out.println("一等奖,1000万");
			} else if (count >= 3 && count <= 5) {
				System.out.println("二等奖,500万");
			} else if (count == 1) {
				System.out.println("三等奖,100万");
			} else if (count == 0) {
				System.out.println("四等奖,50万");
			}

		} else {
			System.out.println("很遗憾,没有中奖");
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值