java实现双色球系统

题目描述:

 思路分析:

1.首先要定义一个方法生成7位随机数字的中奖号码

2.然后定义一个方法来获取用户输入的7位号码

3.再定义一个方法来判断中奖情况

4.定义一个方法将中奖号码和用户投注号码打印出来 

package Lq_project;

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

//java实现双色球系统开发
public class Demo03 {
	//随机6个红球号码(1-33,不能重复),随机1个蓝球号码(1-16),可以采用数组形式组装起来作为中奖号码
	public static void main(String[] args) {
		//幸运号码
		int[] luckyNumbers=createLuckyNum();
		//投注号码
		int[] userNumbers=userInputNum();
		//判断中奖情况
		judge(luckyNumbers, userNumbers);
		
	}
	//定义一个方法打印出数组
	public static void printArray(int[] arr) {
		for(int i=0;i<arr.length;i++) {
			System.out.print(arr[i]+" ");
		}
		System.out.println();
	}
	//判断中奖情况
	public static void judge(int[] luckyNumbers,int[] userNumbers) {
		int redNumber=0;
		int blueNumber=0;
		//判断红球
		for(int i=0;i<userNumbers.length-1;i++) {
			for(int j=0;j<luckyNumbers.length-1;j++) {//利用循环嵌套判断中奖中的号码和投注的号码有几个一样的红球
				if(userNumbers[i]==luckyNumbers[j]) {
					redNumber++;
				}
			}
		}
		//判断蓝球
		blueNumber=userNumbers[6]==luckyNumbers[6]?1:0;
		//打印出中奖号码
		System.out.println("中奖号码是:");
		printArray(luckyNumbers);
		//打印出投注号码
		System.out.println("您投注的号码是:");
		printArray(userNumbers);
		//红球
		System.out.println("您命中了几个红球:"+redNumber);
		//蓝球
		System.out.println("您是否命中了蓝球:"+(blueNumber==1?"是":"否"));
		//判断中奖情况
		if(blueNumber==1&&redNumber<3) {
			System.out.println("恭喜您,中了5元小奖");
		}else if(blueNumber==1&&redNumber==3||blueNumber==0&&redNumber==4) {
			System.out.println("恭喜您,中了10元小奖");
		}else if(blueNumber==1&&redNumber==4||blueNumber==0&&redNumber==5) {
			System.out.println("恭喜您,中了200元");
		}else if(blueNumber==1&&redNumber==5) {
			System.out.println("恭喜您,中了3000元小奖");
		}else if(blueNumber==0&&redNumber==6) {
			System.out.println("恭喜您,中了500万元大奖");
		}else if(blueNumber==1&&redNumber==6) {
			System.out.println("恭喜您,中了1000万元大奖");
		}else {
			System.out.println("不好意思,您未中奖");
		}
	}
	//定义一个方法生成7位数字的中奖号码
	public static int[] createLuckyNum() {
		//1.定义一个动态初始化的数组,储存7个数字
		int[] number=new int[7];
		//2.遍历数组(注意:遍历前6个位置,因为第7个位置是蓝球,生成6个不重复的红球号码,范围是1-33)
		Random r=new Random();
		for(int i=0;i<number.length-1;i++) {
			//这里有个死循环是因为我们要不断找出1-33之间没有重复出现的数字
			while(true) {
				int num1=r.nextInt(33)+1;
		//3.这里要判断当前随机生成的这个号码是否在之前出现过,如果出现过则要重新随机一个,直到不重复为止,才可以存到数组中去
				//[12,36,12,0,0,0, |, 0]
				//		  i,这里i的位置重复出现12,那我们需要遍历i之前的元素查找是否出现过12
				boolean flag=true;//判断是否是重复的,默认设置为没有重复
				for(int j=0;j<i;j++) {//判断该数字在之前有没有出现过
					if(number[j]==num1) {
						flag=false;
						break;
					}
				}
				if(flag) {//flag则代表当前数字在之前没有出现过,即没有重复出现,则可以存到数组中去
					number[i]=num1;
					break;
				}
			}
		}
		//4.为第7个位置生成一个1-16的号码作为蓝球号码
		number[number.length-1]=r.nextInt(16)+1;
		return number;
	}
	//定义一个方法用于用户输入7位号码,作为用户选号
	public static int[] userInputNum() {
		int[] number=new int[7];
		Scanner sc=new Scanner(System.in);
		//1.用户录入6个红球号码
		for(int i=0;i<number.length-1;i++) {
			System.out.println("请您输入第"+(i+1)+"个红球号码(1-33,不能重复):");
			int data=sc.nextInt();
			//把当前录入的数据存到数组中去
			number[i]=data;
		}
		//2.单独录入第7个蓝球号码
		System.out.println("请您录入第7个蓝球号码(1-16):");
		number[number.length-1]=sc.nextInt();
		return number;
	}
}

示例:

 运行结果示例:

 

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值