Java作业-双色球彩票

这篇博客主要展示了如何用Java编程实现一个双色球彩票的模拟抽奖系统,根据给定的要求,设定一等奖奖金最高为500万元。详细代码如下:[...(此处省略具体代码)...]

目标效果:


要求:

奖金那里不是很懂题目描述的意思,所以一等奖默认最大值500万。


代码:

/**
 * 模拟双色球彩票开奖结果:随机生成一注双色球彩票,判断其是否中奖,奖金为多少。
        一注双色球彩票由6个不重复的红球(序号:1~32)和1个篮球(序号:1~16)构成。
 * @author Vivinia   
 */
package Four;

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

public class Raffle {
	private static int[] rewardRaffle;
	private static int[] userGuess;
	private static int blueReward=0;
	private static int blueGuess=0;
	public static void main(String[] args) {
		rewardRaffle=new int[6];
		userGuess=new int[6];
		randomNum(rewardRaffle,0);     //随机生成中奖号码
		randomNum(userGuess,1);         //随机生成用户猜的号码
		juedeNum();
	} 	

	//随机生成中奖号码
	private static void randomNum(int[] redArray,int n) {
		Random r=new Random();
		for(int i=0;i<redArray.length;i++) {
			int temp=r.nextInt(32)+1;
			if(checkTemp(redArray,temp))     //检查随机生成的数是否重复,没有重复进入if
				redArray[i]=temp;             //随机生成红色球的数字
			else {                          //有重复的,判断方法返回false,所以break跳出此次循环重新随机分配
				i--;
				continue;
			}
		}		
		if(n==0) {
			blueReward=r.nextInt(15)+1;              //随机生成蓝色球的数字
			System.out.println("随机生成的有奖号码:");
			showNum(redArray,blueReward);
		}
		else{
			blueGuess=r.nextInt(15)+1;              //随机生成蓝色球的数字
			System.out.println("用户猜测的号码:");
			showNum(redArray,blueGuess);
		}
		
	}
	
	//检查随机生成的数是否重复
	private static boolean checkTemp(int[] redArray,int temp) {
		int i;
		for(i=0;i<redArray.length;i++) {
			if(redArray[i]==temp)         //如果检测到随机产生的已经在数组里了,跳出循环
				break; 
		}
		if(i==redArray.length)
			return true;        //遍历长度等于存在数组元素长度,代表没有相同的
		else 
			return false;        //代表有相同的
	}

	//显示号码
	private static void showNum(int[] redArray, int blue) {
		System.out.print("红色号码:");
		for(int i:redArray)
			System.out.print(i+"\t");
		System.out.println("蓝色号码:"+blue);
	}
	
	//根据返回值显示几等奖
	private static void juedeNum() {
		switch (cal()) {
		case 1:
			System.out.println("恭喜,一等奖!奖金500万元。");
			break;
		case 2:
			System.out.println("恭喜,二等奖!奖金150万元。");
			break;
		case 3:
			System.out.println("恭喜,三等奖!奖金3000元");
			break;
		case 4:
			System.out.println("恭喜,四等奖!奖金200元。");
			break;
		case 5:
			System.out.println("恭喜,五等奖!奖金10元。");
			break;
		case 6:
			System.out.println("恭喜,六等奖!奖金5元。");
			break;
		default:
			System.out.println("很遗憾,没有中奖。");
			break;
		}
	}

	//计算属于几等奖
	private static int cal() {
		int sameNum=0;
		Arrays.sort(rewardRaffle);           //有奖数组升序
		Arrays.sort(userGuess);              //用户猜的数组升序
		for(int i=0;i<rewardRaffle.length;i++) {
			if(rewardRaffle[i]==userGuess[i]) {
				sameNum++;
			}
		}
		if(sameNum==6&&blueGuess==blueReward)
			return 1;
		else if(sameNum==6)
			return 2;
		else if(sameNum==5&&blueGuess==blueReward)
			return 3;
		else if(sameNum==5||(sameNum==4&&blueGuess==blueReward))
			return 4;
		else if(sameNum==4||(sameNum==3&&blueGuess==blueReward))
			return 5;
		else if(blueGuess==blueReward)     //六等奖中必须的都是蓝色球相同,红色球没有相同的或者一个两个相同的结果都一样,这时不需要在判断红色球
			return 6;
		else
			return 0;
	}
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值