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;
}
}
要求:
奖金那里不是很懂题目描述的意思,所以一等奖默认最大值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;
}
}
相关文章推荐
- 新手作业:用JAVA实现双色球彩票系统
- 博达面试题Java编写一个彩票双色球的过程
- Java---彩票双色球原始模型实现
- java简单实现双色球彩票模拟实例(数组、排序、方法、随机数、键盘输入)
- 用Java写的福彩双色球彩票生成器
- 中国福利彩票“双色球”摇奖算法Java实现代码
- java 双色球彩票生成器 Random实现
- java实现双色球彩票案例
- Java 用两个一维数组实现双色球彩票
- java模拟双色球彩票程序
- java双色球彩票小程序
- 微信公众号开发--双色球彩票开奖结果(Java版)
- Java学习-----简易双色球彩票游戏
- java 爬取彩票开奖信息,爬取双色球历史开奖,爬取大乐透历史开奖
- java实现双色球福利彩票系统
- java 双色球彩票小程序
- java《类与对象》课后作业
- 大数据Java基础第十天作业
- JAVA作业
- 动态规划的作业排程算法 Java实现