首先介绍一下什么是双色球
第一步:用户投注一组数字——每次用户投注一个红球号码后,都去调用一个方法来判断这个号码是否已经选择过,如果选择过,让用户重新选号(以下为代码)
public static void printfarry(int[] arr) {
// 输出数组arr的格式
System.out.printf("[");
// 遍历数组arr,输出每一个元素
for (int i = 0; i < arr.length; i++) {
System.out.printf("%d", arr[i]);
// 如果不是最后一个元素,则输出逗号
if (i < arr.length - 1) {
System.out.print(",");
}
}
// 输出右括号
System.out.println("]");
}
public static int[] user() {
// 创建一个长度为7的数组
int[] numbers = new int[7];
// 创建一个Scanner对象
Scanner sc = new Scanner(System.in);
// 遍历数组numbers,让用户输入每一个红球
for (int i = 0; i < numbers.length - 1; i++) {
// 如果用户输入的号码不在1-33之间,则提示重新输入
while (true) {
System.out.printf("请输入第%d个红球号码(1-33之间,不能重复):", i + 1);
int number = sc.nextInt();
if (number < 1 || number > 33) {
System.out.println("对不起,你输入的号码不在范围内,请重新输入:");
} else if (exist(numbers, number)) {
System.out.println("对不起,你输入的号码重复了,请重新输入:");
} else {
// 如果用户输入的号码在1-33之间,且不重复,则将该号码存入数组numbers
numbers[i] = number;
break;
}
}
}
// 提示用户输入最后一个蓝色球
while (true) {
System.out.printf("请输入最后1个蓝色号码(1-16):");
int number = sc.nextInt();
if (number < 1 || number > 16) {
System.out.println("对不起,你输入的号码不在范围内,请重新输入:");
} else if (exist(numbers, number)) {
System.out.println("对不起,你输入的号码重复了,请重新输入:");
} else {
// 如果用户输入的号码在1-16之间,且不重复,则将该号码存入数组numbers
numbers[6] = number;
break;
}
}
// 返回用户输入的7个红球和1个蓝色球
return numbers;
}
private static boolean exist(int[] numbers, int number) {
// 遍历数组numbers,检查是否有重复的元素
for (int i = 0; i < numbers.length; i++) {
if (numbers[i] == number) {
return true;
}
}
return false;
}
}
第二步:生成随机一组双色球号码(以下为代码)
public static int[] crea() {
// 创建一个长度为7的数组
int[] numbers = new int[7];
// 创建一个随机数生成器
Random r = new Random();
// 遍历数组,从1到33
for (int i = 0; i < numbers.length - 1; i++) {
// 循环,直到找到一个不存在的数
while (true) {
// 生成一个1到33的随机数
int number = r.nextInt(33) + 1;
// 判断数组中是否存在该数
if (exist(numbers, number)) {
} else {
// 将该数赋值给数组
numbers[i] = number;
// 跳出循环
break;
}
}
}
// 生成一个1到16的随机数
numbers[6]= r.nextInt(16) + 1;
// 返回数组
return numbers;
}
第三步:判断中奖情况(以下为代码)
public static void judge(int[] userNumbers, int[] luckNumbers) {
// 定义变量,用于记录中奖情况
int redCount = 0;
int blueCount = 0;
// 遍历用户输入的数字
for (int i = 0; i < userNumbers.length - 1; i++) {
// 遍历幸运数字
for (int j = 0; j < luckNumbers.length - 1; j++) {
// 如果用户输入的数字和幸运数字相同,则中奖次数加1
if (userNumbers[i] == luckNumbers[j])
redCount++;
// 只比较一次
break;
}
}
// 判断用户输入的蓝色数字是否和幸运数字相同
blueCount = userNumbers[6] == luckNumbers[6] ? 1 : 0;
System.out.printf("您命中的红球个数是" + redCount);
System.out.printf("您命中的蓝球个数是" + blueCount);
// 根据中奖次数,输出中奖金额
if (redCount == 6 && blueCount == 1)
System.out.printf("恭喜您中奖了,金额为1000万元");
else if (redCount == 6 && blueCount == 0)
System.out.printf("恭喜您中奖了,金额为500万元");
else if (redCount == 5 && blueCount == 1)
System.out.printf("恭喜您中奖了,金额为3000元");
else if (redCount == 5 && blueCount == 0 || redCount == 4 && blueCount == 1)
System.out.printf("恭喜您中奖了,金额为200元");
else if (redCount == 4 && blueCount == 0 || redCount == 3 && blueCount == 1)
System.out.printf("恭喜您中奖了,金额为10元");
else if (redCount < 3 && blueCount == 1)
System.out.printf("恭喜您中奖了,金额为5元");
else
System.out.printf("感谢您做的贡献");
}
最后为完整代码
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 调用user方法,获取用户输入的7个红球和1个蓝色球
int[] userNumbers = userNumbers();
// 调用printfarry方法,输出用户输入的7个红球和1个蓝色球
System.out.printf("您投注的号码:");
printfarry(userNumbers);
int[] luckNumbers = creaNumbers();
System.out.printf("中奖的号码:");
printfarry(luckNumbers);
judge(userNumbers, luckNumbers);
}
public static void printfarry(int[] arr) {
// 输出数组arr的格式
System.out.printf("[");
// 遍历数组arr,输出每一个元素
for (int i = 0; i < arr.length; i++) {
System.out.printf("%d", arr[i]);
// 如果不是最后一个元素,则输出逗号
if (i < arr.length - 1) {
System.out.print(",");
}
}
// 输出右括号
System.out.println("]");
}
public static int[] userNumbers() {
// 创建一个长度为7的数组
int[] numbers = new int[7];
// 创建一个Scanner对象
Scanner sc = new Scanner(System.in);
// 遍历数组numbers,让用户输入每一个红球
for (int i = 0; i < numbers.length - 1; i++) {
// 如果用户输入的号码不在1-33之间,则提示重新输入
while (true) {
System.out.printf("请输入第%d个红球号码(1-33之间,不能重复):", i + 1);
int number = sc.nextInt();
if (number < 1 || number > 33) {
System.out.println("对不起,你输入的号码不在范围内,请重新输入:");
} else if (exist(numbers, number)) {
System.out.println("对不起,你输入的号码重复了,请重新输入:");
} else {
// 如果用户输入的号码在1-33之间,且不重复,则将该号码存入数组numbers
numbers[i] = number;
break;
}
}
}
// 提示用户输入最后一个蓝色球
while (true) {
System.out.printf("请输入最后1个蓝色号码(1-16):");
int number = sc.nextInt();
if (number < 1 || number > 16) {
System.out.println("对不起,你输入的号码不在范围内,请重新输入:");
} else if (exist(numbers, number)) {
System.out.println("对不起,你输入的号码重复了,请重新输入:");
} else {
// 如果用户输入的号码在1-16之间,且不重复,则将该号码存入数组numbers
numbers[6] = number;
break;
}
}
// 返回用户输入的7个红球和1个蓝色球
return numbers;
}
private static boolean exist(int[] numbers, int number) {
// 遍历数组numbers,检查是否有重复的元素
for (int i = 0; i < numbers.length; i++) {
if (numbers[i] == number) {
return true;
}
}
return false;
}
public static int[] creaNumbers() {
// 创建一个长度为7的数组
int[] numbers = new int[7];
// 创建一个随机数生成器
Random r = new Random();
// 遍历数组,从1到33
for (int i = 0; i < numbers.length - 1; i++) {
// 循环,直到找到一个不存在的数
while (true) {
// 生成一个1到33的随机数
int number = r.nextInt(33) + 1;
// 判断数组中是否存在该数
if (exist(numbers, number)) {
} else {
// 将该数赋值给数组
numbers[i] = number;
// 跳出循环
break;
}
}
}
// 生成一个1到16的随机数
numbers[6] = r.nextInt(16) + 1;
// 返回数组
return numbers;
}
public static void judge(int[] userNumbers, int[] luckNumbers) {
// 定义变量,用于记录中奖情况
int redCount = 0;
int blueCount = 0;
// 遍历用户输入的数字
for (int i = 0; i < userNumbers.length - 1; i++) {
// 遍历幸运数字
for (int j = 0; j < luckNumbers.length - 1; j++) {
// 如果用户输入的数字和幸运数字相同,则中奖次数加1
if (userNumbers[i] == luckNumbers[j])
redCount++;
// 只比较一次
break;
}
}
// 判断用户输入的蓝色数字是否和幸运数字相同
blueCount = userNumbers[6] == luckNumbers[6] ? 1 : 0;
System.out.printf("您命中的红球个数是" + redCount+"\t");
System.out.printf("您命中的蓝球个数是" + blueCount+"\n");
// 根据中奖次数,输出中奖金额
if (redCount == 6 && blueCount == 1)
System.out.printf("恭喜您中奖了,金额为1000万元");
else if (redCount == 6 && blueCount == 0)
System.out.printf("恭喜您中奖了,金额为500万元");
else if (redCount == 5 && blueCount == 1)
System.out.printf("恭喜您中奖了,金额为3000元");
else if (redCount == 5 && blueCount == 0 || redCount == 4 && blueCount == 1)
System.out.printf("恭喜您中奖了,金额为200元");
else if (redCount == 4 && blueCount == 0 || redCount == 3 && blueCount == 1)
System.out.printf("恭喜您中奖了,金额为10元");
else if (redCount < 3 && blueCount == 1)
System.out.printf("恭喜您中奖了,金额为5元");
else
System.out.printf("感谢您做的贡献");
}
}