6个红球号码,1个蓝球号码
package com.sls.practise;
import java.util.Random;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//获取随机生成的双色球
int[] arr1 = create();
//打印一下双色球
bain(arr1);
System.out.println("-----------------------");
//获取用户输入的数组
int[] arr2 = user();
//打印用户
bain(arr2);
System.out.println("-----------------------");
//用户中奖情况
System.out.print("恭喜您获得:");
judge(arr1, arr2);
}
//生成双色球
public static int[] create() {
Random r = new Random();
int[] arr = new int[7];
//先随机生成6个不重复的红球,,所以length-1
for (int i = 0; i < arr.length - 1; i++) {
while (true) {
//随机生成一个1-33的数
int temp = r.nextInt(33) + 1;
// 没有重复,flag默认为true
boolean flag = true;
//遍历i前面的位置,判断数组中是否已经存在该数
for (int j = 0; j < i; j++) {
//有重复,跳出当前循环
if (temp == arr[j]) {
flag = false;
break;
}
}
//若该数没有重复,则添加进数组,结束while循环
if (flag) {
arr[i] = temp;
break;
}
}
}
//随机生成一个蓝球(1-16),添加进数组最后
arr[arr.length - 1] = r.nextInt(16) + 1;
//返回生成的双色球数组
return arr;
}
//用户输入号码
public static int[] user() {
Scanner sc = new Scanner(System.in);
int[] arr = new int[7];
//先让用户输入6个不重复的红球号码
System.out.println("请在1-33中输入6个不重复的号码");
for (int i = 0; i < arr.length - 1; i++) {
while (true) {
System.out.println("请输入第" + (i + 1) + "个号码");
int temp = sc.nextInt();
//判断红球数字是否合理
//不合理则进行下一次red:while循环
if (temp < 1 || temp > 33) {
System.out.println("输入不合法,请输入1-33之间的数字");
}
//红球合理
else {
//不重复,flag默认为true
boolean flag = true;
//遍历i前面的位置,判断数组中是否已经存在该数
for (int j = 0; j < i; j++) {
//如果数组中已经存在该数,进行下一次red:while循环
if (temp == arr[j]) {
flag = false;
System.out.println("号码重复,请重新输入");
break;
}
}
if(flag) {
//若该数没有重复,则添加进数组,结束while循环
arr[i] = temp;
break;
}
}
}
}
//输入一个蓝球号码,添加进数组最后
blue:
while (true) {
System.out.println("请在1-16中输入一个号码");
int temp = sc.nextInt();
//判断蓝球是否合理
if (temp < 1 || temp > 16) {
//不合理,执行下一次blue:while循环
System.out.println("输入不合法");
continue blue;
}
//合理
else {
arr[arr.length - 1] = temp;
break;
}
}
//返回用户数组
return arr;
}
//传入两个数组,判断中奖情况
public static void judge(int[] arr1, int[] arr2) {
int count = 0; // 记录红球相同数
//先判断红球
// 用户的数组
for (int i = 0; i < arr2.length - 1; i++) {
// 双色球的数组
// 判断双色球数组中是否存在用户数组的数
for (int j = 0; j < arr1.length - 1; j++) {
if (arr2[i] == arr1[j]) {
count += 1; //存在就加一
break;
}
}
}
//判断蓝球,再根据蓝球分不同情况判断得奖情况
//蓝球相同
if (arr2[arr2.length - 1] == arr1[arr1.length - 1]) {
switch (count) {
case 0:
case 1:
System.out.println("六等奖");
break;
case 2:
case 3:
System.out.println("五等奖");
break;
case 4:
System.out.println("四等奖");
break;
case 5:
System.out.println("三等奖");
break;
case 6:
System.out.println("一等奖");
break;
}
}
//蓝球不同
else {
switch (count) {
case 4:
System.out.println("五等奖");
break;
case 5:
System.out.println("四等奖");
break;
case 6:
System.out.println("二等奖");
break;
//一个都没中
default:
System.out.println("感谢您为福利事业作出的突出贡献");
}
}
}
//遍历数组的方法
public static void bain(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
}
}