import java.util.Random;
import java.util.Scanner;
public class Test8 {
public static void main(String[] args) {
//双色球系统开发
//投注号码由6个红色球号码和1个蓝色球号码组成
//红色球号码从1-33中选择,要求选择红球不能重复
//蓝色球号码从1-16中选择
//共7个数据
//1、定义一个方法,生成一组中奖号码
int[] luckNumbers = createLuckNumber();
//printArray(luckNumbers);//测试
//2、调用方法,让用户输入7个号码,作为用户选号
int[] userNumbers = userInputNumbers();
//printArray(userNumbers);//测试
//3、调用判断用户中奖情况的方法
judge(luckNumbers, userNumbers);
}
//打印
public static void printArray(int[] arr){
for (int i = 0; i < arr.length - 1; i++) {
System.out.print(arr[i] + "\t");
}
System.out.println("(" + arr[arr.length - 1] + ")");
System.out.println();
}
//1、随机一组中奖号码返回
public static int[] createLuckNumber(){
//定义一个动态初始化数组,存储7个数字
int[] numbers = new int[7];//[12, 23, 0, 0, 0, 0, | 0]
// i
//遍历数组,为每个位置生成相应的号码(注意:遍历前六个位置,生成6个不重复的红球号码,范围是1-33)
Random r = new Random();
for (int i = 0; i < numbers.length - 1; i++) {
//注意:必须去判断当前生成的随机数字不能够重复,出现过要重新随机一个,直到不重复为止,才可以存入数组中去
//为当前位置找一个没有重复的1-33之间的数字
while (true) {
int data = r.nextInt(33) + 1;//(1-33) --> -1 --> (0-32) +1
//定义一个flag,默认当前数字是没有重复的
boolean flag = true;
for (int j = 0; j < i; j++) {
if (data == numbers[j]) {
//说明当前的随机数与前面的数字由重复
flag = false;
break;
}
}
if (flag) {
//若flag还是true,说明当前数字没有重复,就可以进行赋值
numbers[i] = data;
//跳出while死循环
break;
}
}
}
//前面六个红色球号码已经有了,现在选蓝色球号码,为第7位生成一个蓝色球号码1-16
//蓝色球号码可以与红球重复
numbers[numbers.length - 1] = r.nextInt(16) + 1;
//把数组返回
return numbers;
}
//2、用户输入一组双色球号码返回
public static int[] userInputNumbers(){
//定义一个数组存储用户输入的7个号码
int[] numbers = new int[7];
//让用户输入6个红球号码(1-33)
Scanner sc = new Scanner(System.in);
for (int i = 0; i < numbers.length - 1; i++) {
//注意:必须去判断当前用户输入的号码不能够重复,出现过要重新选一个,直到不重复为止,才可以存入数组中去
//为当前位置找一个没有重复的1-33之间的数字
while (true) {
System.out.println("请您输入第" + (i + 1) + "个红球号码(1-33): ");
int data = sc.nextInt();//(1-33) --> -1 --> (0-32) +1
if (data < 1 || data > 33) {
//用户输入的号码不在范围之内,进入下一次while循环
System.out.println("对不起,您当前输入的号码不在范围之内~~");
continue;
}
//定义一个flag,默认当前用户输入的号码是没有重复的
boolean flag = true;
for (int j = 0; j < i; j++) {
if (data == numbers[j]) {
//说明当前用户输入的号码与前面的号码由重复
flag = false;
System.out.println("您当前输入的号码于前面的号码有冲突~~");
break;
}
}
if (flag) {
//若flag还是true,说明当前号码没有重复,就可以进行赋值
numbers[i] = data;
//跳出while死循环,为下一个号码输入
break;
}
}
}
//输入蓝球号码
while(true){
System.out.println("请您输入您的蓝球号码(1-16): ");
int data = sc.nextInt();
boolean flag = true;
if (data < 1 || data > 16){
System.out.println("对不起,您当前输入的号码不在范围之内~~");
flag = false;
continue;
}
numbers[numbers.length - 1] = data;
break;
}
return numbers;
}
//3、传入两组号码,判断用户中奖情况
public static void judge(int[] luckNumbers,int[] userNumbers){
//判断是否中奖了,例如
//luckNumbers = [12, 23, 8, 16, 15, 32, 9]
//userNumbers = [23, 13, 18, 6, 8, 33, 10]
//定义2个变量分别存储红球命中的个数,以及蓝球命中的个数
int redHitNumbers = 0;
int blueHitNumbers = 0;
//判断红球命中了几个,开始统计
for (int i = 0; i < userNumbers.length - 1; i++) {
for (int j = 0; j < luckNumbers.length - 1; j++) {
if (userNumbers[i] == luckNumbers[j]) {
//红球命中,redHitNumbers自加1
redHitNumbers++;
//到这里没必要继续判断了,可以跳出内部循环了
break;
}
}
}
//判断蓝球命中个数
blueHitNumbers = userNumbers[6] == luckNumbers[6] ? 1 : 0;
//将中奖情况告诉用户
System.out.println("中奖的号码是: ");
printArray(luckNumbers);
System.out.println("您投注的号码是: ");
printArray(userNumbers);
System.out.println("您命中的红球个数: " + redHitNumbers);
System.out.println("您命中的蓝球个数: " + blueHitNumbers);
//判断中奖情况
if (blueHitNumbers + redHitNumbers > 0 && blueHitNumbers + redHitNumbers <= 3) {
System.out.println("恭喜你,获得5元小奖!");
}else if (blueHitNumbers + redHitNumbers == 4) {
System.out.println("恭喜你,获得10元小奖!");
}else if (blueHitNumbers + redHitNumbers == 5) {
System.out.println("恭喜你,获得200元!");
}else if (blueHitNumbers == 1 && redHitNumbers == 5) {
System.out.println("恭喜你,获得3000元的大奖!");
}else if (blueHitNumbers == 0 && redHitNumbers == 6) {
System.out.println("恭喜你,获得最高500万的超级大奖!");
}else if (blueHitNumbers + redHitNumbers == 7) {
System.out.println("恭喜你,获得最高1000万的巨奖!");
}else {
System.out.println("感谢您为福利事业作出的突出贡献!");
}
}
}
双色球系统开发
于 2022-04-22 13:50:30 首次发布