题目:
玩法规则:“双色球”每注投注号码由 6 个红色球号码和 1 个蓝色球号码 组成。红色球号码从 1—33 中选择,蓝色球号码从 1—16 中选择。 球的数字匹配数量和颜色决定了是否中奖,具体中奖规则:
**注意:**其中选6+1中6+1为一等奖是指:选六个红色球号码+1个蓝色球号码,中奖结果是六个红色和一个蓝色全中即为一等奖。
解析:
1、首先首先需要获取一组用户输入的号码,在这之中,可以先定义一个数组,先让用户输入6个红色数字,然后再单独输入一个蓝色数字。
2、使用随机数产生一组中奖号码将其保存在数组中。
3、先比较红色数字是否有相同的,如果有就定义一个变量i进行++。然后再单独比较蓝色数字是否相同,再用另一个变量来存储m进行++这个结果。
4、判断i和m的组合是属于几等奖,然后输出结果。
代码如下:
在这里插入代码片
public static void main(String[] args) {
/**
* 双色球彩票训练任务
*/
int[] arr1 = new int[7];
int[] arr = new int[7];
int num;
// 获取系统生成的中奖号码
arr = CreateData();
// 获取用户的号码
arr1 = InputData();
System.out.println("用户号码为:" + Arrays.toString(arr1));
System.out.println("中奖号码为:" + Arrays.toString(arr));
JudgeData(arr, arr1);
}
// 生成一组中奖号码
public static int[] CreateData() {
int arr[] = new int[7];
Random rand = new Random();
// 蓝色球
for (int i = 0; i < 6; i++) {
arr[i] = rand.nextInt(33) + 1;
}
arr[6] = rand.nextInt(16) + 1;
return arr;
}
// 获取用户数据
public static int[] InputData() {
Scanner input = new Scanner(System.in);
int num;
int[] arr1 = new int[7];
// 获取用户的号码
System.out.println("请输入蓝色球号码(1-33):");
if(input.hasNextInt()) {
for (int i = 0; i < 6; i++) {
num = input.nextInt();
if (num >= 1 && num <= 33) {
arr1[i] = num;
} else {
while (true) {
System.out.println("数据有误,重新输入");
arr1[i] = input.nextInt();
if (arr1[i] >= 1 && arr1[i] <= 33) {
break;
}
}
}
}
}else {
System.out.println("数据有误。");
}
System.out.println("请输入红色球号码(1-16):");
if (input.hasNextInt()) {
num = input.nextInt();
if ((num <= 16) && (num >= 1)) {
arr1[6] = num;
} else {
while (true) {
System.out.println("数据有误,重新输入");
arr1[6] = input.nextInt();
if (arr1[6] >= 1 && arr1[6] <= 16) {
break;
}
}
}
}else {
System.out.println("数据有误,重新输入");
}
return arr1;
}
// 判断几等奖
public static void JudgeData(int[] arr, int[] arr1) {
int i,j;
int m=0;
int n =0;
for(i =0;i<6;i++) {
for(j = 0;j<6;j++) {
if(arr1[i] == arr[j]) {
m ++; //蓝色号码中奖标记
}
}
}
if(arr[6] ==arr1[6]) {
n++; //红色号码中奖标记
}
if(m == 6 && n ==1) {
System.out.println("恭喜中奖,一等奖");
}else if(m == 6 && n ==0){
System.out.println("恭喜中奖,二等奖");
}else if(m == 5 && n ==1) {
System.out.println("恭喜中奖,三等奖");
}else if((m==5 && n==0 ) ||(m ==4 && n ==1)) {
System.out.println("恭喜中奖,四等奖");
}else if((m ==4 && n==0) ||(m ==3 && n==1)) {
System.out.println("恭喜中奖,五等奖");
}else if ((m == 2 && n == 1)||(m ==1 && n ==1) ||(m == 0 && n == 1)) {
System.out.println("恭喜中奖,六等奖");
}else {
System.out.println("很抱歉,您未中奖。");
}
// return true;
}
其中还有一些优化点,在后续会进行对应优化。