您的位置:首页 > 编程语言 > Java开发

Java作业-双色球彩票

2017-09-23 20:00 302 查看
目标效果:



要求:



奖金那里不是很懂题目描述的意思,所以一等奖默认最大值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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: