Java练习之双色球彩票

题目:
玩法规则:“双色球”每注投注号码由 6 个红色球号码和 1 个蓝色球号码 组成。红色球号码从 1—33 中选择,蓝色球号码从 1—16 中选择。 球的数字匹配数量和颜色决定了是否中奖,具体中奖规则:
在这里插入图片描述**注意:**其中选6+1中6+1为一等奖是指:选六个红色球号码+1个蓝色球号码,中奖结果是六个红色和一个蓝色全中即为一等奖。
解析:
1、首先首先需要获取一组用户输入的号码,在这之中,可以先定义一个数组,先让用户输入6个红色数字,然后再单独输入一个蓝色数字。
2、使用随机数产生一组中奖号码将其保存在数组中。
3、先比较红色数字是否有相同的,如果有就定义一个变量i进行++。然后再单独比较蓝色数字是否相同,再用另一个变量来存储m进行++这个结果。
4、判断i和m的组合是属于几等奖,然后输出结果。
代码如下:

在这里插入代码片
public static void main(String[] args) {
		/**
		 * 双色球彩票训练任务
		 */
		int[] arr1 = new int[7];
		int[] arr = new int[7];
		int num;

		// 获取系统生成的中奖号码
		arr = CreateData();

		// 获取用户的号码
		arr1 = InputData();

		System.out.println("用户号码为:" + Arrays.toString(arr1));
		System.out.println("中奖号码为:" + Arrays.toString(arr));
		
		JudgeData(arr, arr1);

	}

	// 生成一组中奖号码
	public static int[] CreateData() {
		int arr[] = new int[7];
		Random rand = new Random();
		// 蓝色球
		for (int i = 0; i < 6; i++) {
			arr[i] = rand.nextInt(33) + 1;
		}
		arr[6] = rand.nextInt(16) + 1;
		return arr;
	}

	// 获取用户数据
	public static int[] InputData() {
		Scanner input = new Scanner(System.in);
		int num;
		int[] arr1 = new int[7];
		// 获取用户的号码
		System.out.println("请输入蓝色球号码(1-33):");
		if(input.hasNextInt()) {
			for (int i = 0; i < 6; i++) {
				num = input.nextInt();
				if (num >= 1 && num <= 33) {
					arr1[i] = num;
				} else {

					while (true) {
						System.out.println("数据有误,重新输入");
						arr1[i] = input.nextInt();
						if (arr1[i] >= 1 && arr1[i] <= 33) {
							break;
						}
					}
				}
			}
		}else {
			System.out.println("数据有误。");			
		}
		

		System.out.println("请输入红色球号码(1-16):");
		if (input.hasNextInt()) {
			num = input.nextInt();
			if ((num <= 16) && (num >= 1)) {
				arr1[6] = num;
			} else {
				while (true) {
					System.out.println("数据有误,重新输入");
					arr1[6] = input.nextInt();
					if (arr1[6] >= 1 && arr1[6] <= 16) {
						break;
					}
				}
			}
		}else {
			System.out.println("数据有误,重新输入");
			
			}
		return arr1;
	}

	// 判断几等奖
	public static void JudgeData(int[] arr, int[] arr1) {

		int i,j;
		int m=0;
		int n =0;
		for(i =0;i<6;i++) {
			for(j = 0;j<6;j++) {
				if(arr1[i] == arr[j]) {
					m ++;  //蓝色号码中奖标记
				}
			}
		}
		
		if(arr[6] ==arr1[6]) {
			n++; //红色号码中奖标记
		}
		
		if(m == 6 && n ==1) {
			System.out.println("恭喜中奖,一等奖");
		}else if(m == 6 && n ==0){
			System.out.println("恭喜中奖,二等奖");
		}else if(m == 5 && n ==1) {
			System.out.println("恭喜中奖,三等奖");
		}else if((m==5 && n==0 ) ||(m ==4 && n ==1)) {
			System.out.println("恭喜中奖,四等奖");
		}else if((m ==4 && n==0) ||(m ==3 && n==1)) {
			System.out.println("恭喜中奖,五等奖");
		}else if ((m == 2 && n == 1)||(m ==1 && n ==1) ||(m == 0 && n == 1)) {
			System.out.println("恭喜中奖,六等奖");
		}else {
			System.out.println("很抱歉,您未中奖。");
		}
//		return true;
	}

其中还有一些优化点,在后续会进行对应优化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值