题目要求:用户按照自己的想法输入1--31之间七个不相等的数,机器随机产生7个不相等的数作为开奖号码,然后比较两者的相等个数,全中一等奖,中6个二等奖,中5个,三等奖;
代码实现
package com.hundan04.demo01;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
/**
* @author 混蛋
* @create 2022/8/15 0:15
* ===============================================
* 1.随机产生1----31之间不相等的7个数
* 2.用户输入1---31之间不想的7个数,
* 3.两者比较确定相等的个数,
* 4.判断相等的个数进而得到对应的奖项
*/
public class Demo01Check7Random31 {
public static void main(String[] args) {
//1.获取随机产生的数组
int[] randomAray = randomAray();
//如果想作弊,请打开此行代码
// System.out.println(Arrays.toString(randomAray));
//2.获取用户输入法人数的数组
int[] userArray = userArray();
System.out.println("你输入的号码为:"+Arrays.toString(userArray));
System.out.println("本次开奖号码为:"+Arrays.toString(randomAray));
//3.获取两个数组想等的个数
int count = comparator(userArray, randomAray);
//4.swith判断不停数字产生不同的奖项
switch (count) {
case 0:
System.out.println("0个,未中奖");
break;
case 1:
System.out.println("一个,未中奖");
break;
case 2:
System.out.println("二个,未中奖");
break;
case 3:
System.out.println("三个,未中奖");
break;
case 4:
System.out.println("四个,未中奖");
break;
case 5:
System.out.println("五个,三等奖");
break;
case 6:
System.out.println("六个,二等奖");
break;
case 7:
System.out.println("七个,一等奖奖");
break;
}
}
/**
* 随机产生七个数的方法
*
* @return
*/
public static int[] randomAray() {
//1.定义一个数组,用于存放随机产生的数
int[] randomArray = new int[7];
//2.创建Random对象
Random random = new Random();
//3.循环7次,产生7个不想等的随机数,存入数组
for (int i = 0; i < randomArray.length; i++) {
//4.产生1---31之间的数
int num = random.nextInt(31) + 1;
//5.判断数组中舒服存在相等的的数,定义一个方法,用书输入的时候还要用
if (isSave(randomArray, num)) {
//6.存在的话,循环次数恢复到原值
i--;
} else {
//不存在,存入到数组
randomArray[i] = num;
}
}
//返回得到的集合
return randomArray;
}
/**
* 用户输入的数的数组
*
* @return
*/
public static int[] userArray() {
//1.创建一个数组,用于存放用户输入的数
int[] userArray = new int[7];
//2.创建Scanner对象
Scanner scanner = new Scanner(System.in);
//3.循环输入7个不相等的数
for (int i = 0; i < userArray.length; i++) {
//4.提示用户输入数
System.out.println("请输入第" + (i + 1) + "个数");
int num = scanner.nextInt();
//5.判断该数是否在1---31之间
if (!(num >= 1 && num <= 31)) {
System.out.println("请输入1---31之间的数");
i--;
} //6.判断输入的数是否存在
else if (isSave(userArray, num)) {
//6.1存在,次数减1,提示重新输入
System.out.println("该数已存在,请重新输入");
i--;
} else {
// 6.2不存在,存入数组
userArray[i] = num;
}
}
//返回数组
return userArray;
}
/**
* 判断数组中是否有重重复的数
*
* @param array
* @param key
* @return
*/
public static boolean isSave(int[] array, int key) {
for (int i : array) {
if (i == key) {
return true;
}
}
return false;
}
/**
* 比较两个数组的元素的想等的个数
*
* @param array01
* @param array02
* @return
*/
public static int comparator(int[] array01, int[] array02) {
//1.定义一个计数器,记录相等的个数
int count = 0;
//2.遍历一个数组,得到元素
for (int key : array01) {
//3/调用判断一个数组中是否包含一个数
if (isSave(array02, key)) {
//3.1包含,count加1;
count++;
}
}
return count;
}
}