中奖规则
1、投注号码由6个红色球号码和1个蓝色球号码组成。 2、红色球号码从1-33中选择;蓝色球号码从1-16中选择。
中奖条件
代码实现
public static void main(String[] args) {
//模拟双色球彩票系统
//投注号码由6个红色球号码和1个蓝色球号码组成。
// 红色球号码从1-33中选择;蓝色球号码从1-16中选择。
//分析
//1.生成中奖号码
//调用方法
int[] arr = createNumber();
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
System.out.println("=======================================");
//2.让用户输入号码
//号码也是由6个红色球号码和1个蓝色球号码组成
int[] userInputArr = userInputNumber();
/*for (int i = 0; i < userInputArr.length; i++) {
System.out.print(userInputArr[i] + " ");
}*/
//3.核验用户的中奖情况
//红色号码 蓝色号码
//累计红蓝色号码猜中个数
int redCount = 0;
int blueCount = 0;
//判断红色号码猜中个数,数组最后一位是蓝色号码,所以要 -1
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[] userInputNumber() {
//1.定义一个数组接收用户输入的号码
int[] userInputArr = new int[7];
//键盘录入号码
Scanner sc = new Scanner(System.in);
//2.获取6个红色号码
for (int i = 0; i < 6; ) {
//获取6个红色号码
System.out.println("尊敬的用户您好,请输入第" + (i + 1) + "个红色号码");
int redNumber = sc.nextInt();
//redNumber 在1~33 唯一不重复
if (redNumber >= 1 && redNumber <= 33) {
//判断号码是否已存在数组中
boolean flag = contains(userInputArr, redNumber);
//不存在则存入数组中
if (!flag) {
userInputArr[i] = redNumber;
//成功存入才累加
i++;
} else {
System.out.println("输入号码已存在,请重新输入!");
}
} else {
System.out.println("当前输入的红色号码超出范围(1~33),请重新输入!!!");
}
}
//3.获取1个蓝色号码
System.out.println("请输入1位蓝色号码:");
//范围:1~16 选中,再用组合键: Ctrl + Alt + t 选择while循环
while (true) {
int blueNumber = sc.nextInt();
if (blueNumber >= 1 && blueNumber <= 16) {
userInputArr[userInputArr.length - 1] = blueNumber;
break;//获取成功再结束循环
} else {
System.out.println("尊敬的用户您好,当前输入的蓝色号码超出范围(1~16),请重新输入!");
}
}
//返回数组
return userInputArr;
}
//定义一个方法(生成中奖号码)
public static int[] createNumber() {
//1.创建数组用于添加中奖号码
// 6个红色球号码和1个蓝色球号码 数组长度:7
int[] arr = new int[7];
//2.随机生成6位红球号码(1~33) 1位篮球号码(1~16),添加到数组中
//红球:不能重复 1 2 3 4 5 6
//蓝球:可以和红球重复
Random r = new Random();
for (int i = 0; i < 6; ) {
int redNumber = r.nextInt(33) + 1;
//调用contains方法,判断号码是否已经存在数组中
boolean flag = contains(arr, redNumber);
if (!flag) {
//不存在就把号码存进数组中
arr[i] = redNumber;
//存入成功才累加
i++;
}
}
//3.随机生成1个蓝色号码
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;
}