问题描述:
双色球中奖系统,系统会自动随机生成一个中奖号码,然后用户会自己通过键盘输入自己选择的数字然后组成一个抽奖号码,然后通过比对用户的数字和系统生成的数字的重合数,来判断用户中了几等奖。
彩票号码的规则是:有六个红球,红球的数字范围为1-33,六个红球的数字不能重复。有一个蓝球,蓝球数字的取值范围为1-16.蓝球数字可以和红球数字一样。
中奖规则如下:
代码实现:
package test;
//双色球中奖系统,系统会自动随机生成一个中奖号码,然后用户会自己通过键盘输入自己
//选择的数字然后组成一个抽奖号码,然后通过比对用户的数字和系统生成的数字的重合数,来判断用户中了几等奖
/*
* 彩票号码的规则是:有六个红球,红球的数字范围为1-33,六个红球的数字不能重复
* 有一个蓝球,蓝球数字的取值范围为1-16.蓝球数字可以和红球数字一样
* 中奖规则为:*/
import java.util.Random; //导入随机包,可以生成随机数字
import java.util.Scanner;
public class text2 {
//1.系统随机生成7个数字,六个数字是红球,一个数字是蓝球,将它们存放在数组中
public static void main(String[]args) {
int []arr=creatNumber(); //1.生成中奖号码
System.out.println("**************************");
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]+"");
}
System.out.println("**************************");
int[] userInputArr=userInputNumber();
//2.用户输入彩票号码 红+蓝
//3.判断用户的中奖情况
//红球 蓝球
int redCount= 0;
int blueCount=0;
//判断红球 只要存在就算,不一定要位置一样
for(int i=0;i< userInputArr.length-1;i++) {
int redNumber=userInputArr[i];
for(int j=0;j<arr.length-1;j++) {
if(redNumber==arr[j]) {
redCount++;
//如果找到了,那么后面的数字就没有必要继续比较了
//跳出内循环,继续判断下一个红球号码是否中奖
break;
}
}
}
//判断蓝球
int blueNumber=userInputArr[userInputArr.length-1];
if(blueNumber==arr[arr.length-1]) {
blueCount++;
}
//根据红球的个数和蓝球的个数来判断中奖情况
if(redCount==6&&blueCount==1) {
System.out.println("恭喜你,中奖1000万");
}else if(redCount==6&&blueCount==0) {
System.out.println("恭喜你,中奖500万");
}else if(redCount==5&&blueCount==1) {
System.out.println("恭喜你,中奖3000");
}else if((redCount==5&&blueCount==0)||(redCount==4&&blueCount==1)) {
System.out.println("恭喜你,中奖200");
}else if((redCount==4&&blueCount==0)||(redCount==3&&blueCount==1)) {
System.out.println("恭喜你,中奖10");
}else if((redCount==2&&blueCount==1)||(redCount==1&&blueCount==1)||(redCount==0&&blueCount==1)) {
System.out.println("恭喜你,中奖5");
}else {
System.out.println("谢谢参与");
}
}
public static int[] creatNumber(){
//1.创建数组用于添加中奖号码
//六个红球,一个蓝球数组长度7
int []arr=new int[7];
//2.随机生成号码并添加到数组当中
//红球:不能重复的,例如 1 2 3 4 5 6
//蓝球 :可以和红球号码重复 例如 5
//生成红球号码并添加到数组当中
Random r=new Random();
for(int i=0;i<6;) {
//获取红球号码
int redNumber=r.nextInt(33)+1; //随机数Bound的范围为取左不取右,bound:33的取值范围为0-32
boolean flag = contains(arr,redNumber);
if(!flag) { //数字在数组中不存在
//把红球号码添加到数组当中
arr[i]+=redNumber;
i++;
}
}
//生成蓝球号码并添加到数组当中,因为蓝球号码只有一个,所以没那么麻烦
int blueNumber =r.nextInt(16)+1;
arr[arr.length-1]=blueNumber; //直接添加到最大索引
return arr;
}
//用于判断数字在数组中是否存在
public static boolean contains(int[]arr,int number) {
for(int i=0;i<arr.length;i++) {
if(arr[i]==number) {
return true;
}
}
return false;
}
public static int[] userInputNumber() {
//创建数组用于添加用户购买的彩票号码
//6个红球 1个蓝球 数组长度 7
int[] arr=new int[7];
//利用键盘录入让用户输入,和刚才随机生成数字不一样
Scanner sc=new Scanner(System.in);
//让用户输入红球号码
for(int i=0;i<6;) {
System.out.println("请输入第"+(i+1)+"个红球号码");
int redNumber =sc.nextInt();
//redNumber 1-33 唯一不重复 ,判断两个条件,范围和唯一性
if(redNumber>=1&&redNumber<=33) {
boolean flag=contains(arr,redNumber);
if(!flag) {
//不存在
//有效的,可以添加到数组中
arr[i]=redNumber;
i++;
}else {
//存在
System.out.println("当前红球号码已经存在,请重新输入");
}
}else {
System.out.println("当前红球号码超出范围");
}
}
//输入蓝球号码
System.out.println("请输入蓝球号码");
//1-16
while(true) {
int blueNumber=sc.nextInt();
if(blueNumber>=1&&blueNumber<=16) {
arr[arr.length-1]=blueNumber;
break;
}else {
System.out.println("当前蓝球号码超出范围");
}
}
return arr;
}
}
运行结果示例: