请编写一个Java程序,用来模拟双色球彩票的玩法和中奖情况。
双色球彩票是一种中国的彩票游戏,它由6个红色球和1个蓝色球组成,每个球的号码范围分别是1到33和1到16。
系统会随机生成一组号码作为中奖号码,用户可以输入一组号码作为自己的号码,然后比较两组号码有多少个相同。
根据相同的个数和颜色,可以判断用户是否中奖,以及中奖的等级和奖金。
你的程序应该包括以下的功能:
- 使用数组或集合来存储系统生成的号码和用户输入的号码。
- 使用随机数或数学类来生成系统的号码,并保证红色球不重复。
- 使用输入输出或扫描器类来获取用户的号码,并检查是否符合规则。
- 使用循环或排序来比较两组号码有多少个相同,并记录相同的个数和颜色。
- 使用条件语句或逻辑运算符来判断是否中奖,并根据中奖等级给出相应的奖金或提示信息。
- 加粗样式使用打印语句或格式化输出来显示系统的号码,用户的号码,中奖情况和结果。
这个程序的的步骤包括:
- 创建一个长度为7的int数组arr,用来存储系统生成的随机号码。
- 调用systemUnionLottoRed(arr)方法,给数组arr的前6个元素赋值为1到33之间的不重复的随机数,表示红色球的号码。
- 调用systemUnionLottoBlue(arr)方法,给数组arr的最后一个元素赋值为1到16之间的随机数,表示蓝色球的号码。
- 调用ergodic(arr)方法,遍历并打印数组arr中的所有元素,显示系统生成的号码。
- 创建一个长度为7的int数组arr1,用来存储用户输入的号码。
- 调用importRedArr1(arr1)方法,让用户输入6个1到33之间的不重复的整数,给数组arr1的前6个元素赋值,表示红色球的号码。
- 调用importBlueArr1(arr1)方法,让用户输入一个1到16之间的整数,给数组arr1的最后一个元素赋值,表示蓝色球的号码。
- 调用ergodic(arr1)方法,遍历并打印数组arr1中的所有元素,显示用户输入的号码。 调用comparisonRed(arr,
- arr1)方法,比较两个数组中前6个元素(红色球)有多少个相同,并返回相同个数x。 调用comparisonBlue(arr,
- arr1)方法,比较两个数组中最后一个元素(蓝色球)是否相同,并返回相同个数i(0或1)。
- 打印x和i的值,显示红色球和蓝色球中奖的数量。
- 调用award(x,i)方法,根据x和i的值判断是否中奖,并给出相应的奖金或提示信息。
public static void main(String[] arge) {
int[] arr = new int[7];
//生成红色
systemUnionLottoRed(arr);
//生成蓝色
systemUnionLottoBlue(arr);
//输出一下
ergodic(arr);
//输入一组数字
int[] arr1 = new int[arr.length];
//输入红色数字
importRedArr1(arr1);
//输入蓝色数字
importBlueArr1(arr1);
//输出这组数字
ergodic(arr1);
//比对两个数组
int x = comparisonRed(arr, arr1);
System.out.println("红色球中了" + x + "个");
int i = comparisonBlue(arr, arr1);
System.out.println("蓝色球中了" + i + "个");
//判断是否中奖
award(x, i);
}
方法的代码如下:
public static void systemUnionLottoRed(int[] arr) {
for (int i = 0; i < 6; ) {
//生成一个0~33的随机数
Random r = new Random();
int redNumber = r.nextInt(33) + 1;
//引用判断方法,并赋值给一个boolean的变量
boolean flage = judge(arr, redNumber);
//遍历数组,并将随机数注入
//判断这个数是否重复
if (!flage) {
arr[i] = redNumber;
i++;
}
}
}
//判断这个数字是否在数组中存在
public static boolean judge(int[] arr, int refNumber) {
//创建一个可以返回boolean类型的方法
//创建一个boolean变量
boolean flage = false;
//遍历数组判断是否存在
for (int i = 0; i < 6; ) {
//存在则定义为true
if (arr[i] == refNumber) {
flage = true;
break;
} else {
i++;
}
}
//返回这个flage的值
return flage;
}
//系统生成蓝色球
public static void systemUnionLottoBlue(int[] arr) {
Random r = new Random();
int blueNumber = r.nextInt(16) + 1;
arr[6] = blueNumber;
}
//遍历格式输出
public static void ergodic(int[] arr) {
System.out.println("这组数字是");
System.out.print("[");
for (int i = 0; i <= 6; i++) {
if (i < 6) {
System.out.print(arr[i] + ",");
} else {
System.out.print(arr[i] + "]\n");
}
}
}
public static int importNumber(int number) {
Scanner sc = new Scanner(System.in);
number = sc.nextInt();
return number;
}
//向数组中输入红球数字
public static void importRedArr1(int arr[]) {
//定义一个变量用来接收输入函数数字
int number = 0;
//定义一个变量用来判断
boolean flage = false;
//遍历数组
for (int i = 0; i < 6; i++) {
System.out.println("请输入第" + (i + 1) + "个红球的数字.(输入区间为1~33)");
number = importNumber(number);
//判断数组是否在输入区间范围
if (number > 0 && number <= 34) {
//引入函数判断是否重复
flage = judge(arr, number);
if (!flage) {
//没有重复将数字赋值给数组
arr[i] = number;
} else {
System.out.println("输入了相同的参数");
}
} else {
System.out.println("输入的范围错误");
}
}
}
public static void importBlueArr1(int[] arr) {
int number = 0;
System.out.println("请输入蓝球数字(输入区间为1~16)");
number = importNumber(number);
if (number > 0 && number <= 16) {
arr[6] = number;
} else {
System.out.println("输入范围有误");
}
}
//对比随机生成的红色数字和输入红色的数字
public static int comparisonRed(int[] arr, int[] arr1) {
//定义一个统计变量
int x = 0;
//遍历第一个数组
for (int i = 0; i < arr.length - 1; i++) {
//遍历第二个数组j=i确保比对的索引是一样的
for (int j = i; j < arr.length - 1; j++) {
if (arr[i] == arr1[j]) {
x++;
}
}
}
return x;
}
//对比随机生成的蓝色数字和输入蓝色的数字
public static int comparisonBlue(int[] arr, int[] arr1) {
//定义一个统计变量
int x = 0;
//使用三元运算符true则+1,否则输出0
return (arr[6] == arr1[6]) ? (++x) : x;
}
//判断中了几等奖
public static void award(int x, int y) {
if (x == 6 && y == 1) {
System.out.println("一等奖:1000万元");
} else if (x == 6 && y == 0) {
System.out.println("二等奖:500万元");
} else if (x == 5 && y == 1) {
System.out.println("三等奖:3000元");
} else if (x >= 4 && x <= 5) {
System.out.println("四等奖:200元");
} else if (x >= 3 && x <= 4) {
System.out.println("五等奖:10元");
} else {
System.out.println("六等奖:5元");
}
}
完整代码如下:
package Study_03;
import java.util.Random;
import java.util.Scanner;
public class unionLotto {
//双色球判断
public static void main(String[] arge) {
int[] arr = new int[7];
//生成红色
systemUnionLottoRed(arr);
//生成蓝色
systemUnionLottoBlue(arr);
//输出一下
ergodic(arr);
//输入一组数字
int[] arr1 = new int[arr.length];
//输入红色数字
importRedArr1(arr1);
//输入蓝色数字
importBlueArr1(arr1);
//输出这组数字
ergodic(arr1);
//比对两个数组
int x = comparisonRed(arr, arr1);
System.out.println("红色球中了" + x + "个");
int i = comparisonBlue(arr, arr1);
System.out.println("蓝色球中了" + i + "个");
//判断是否中奖
award(x, i);
}
//系统生成红色双色球
public static void systemUnionLottoRed(int[] arr) {
for (int i = 0; i < 6; ) {
//生成一个0~33的随机数
Random r = new Random();
int redNumber = r.nextInt(33) + 1;
//引用判断方法,并赋值给一个boolean的变量
boolean flage = judge(arr, redNumber);
//遍历数组,并将随机数注入
//判断这个数是否重复
if (!flage) {
arr[i] = redNumber;
i++;
}
}
}
//判断这个数字是否在数组中存在
public static boolean judge(int[] arr, int refNumber) {
//创建一个可以返回boolean类型的方法
//创建一个boolean变量
boolean flage = false;
//遍历数组判断是否存在
for (int i = 0; i < 6; ) {
//存在则定义为true
if (arr[i] == refNumber) {
flage = true;
break;
} else {
i++;
}
}
//返回这个flage的值
return flage;
}
//系统生成蓝色球
public static void systemUnionLottoBlue(int[] arr) {
Random r = new Random();
int blueNumber = r.nextInt(16) + 1;
arr[6] = blueNumber;
}
//遍历格式输出
public static void ergodic(int[] arr) {
System.out.println("这组数字是");
System.out.print("[");
for (int i = 0; i <= 6; i++) {
if (i < 6) {
System.out.print(arr[i] + ",");
} else {
System.out.print(arr[i] + "]\n");
}
}
}
public static int importNumber(int number) {
Scanner sc = new Scanner(System.in);
number = sc.nextInt();
return number;
}
//向数组中输入红球数字
public static void importRedArr1(int arr[]) {
//定义一个变量用来接收输入函数数字
int number = 0;
//定义一个变量用来判断
boolean flage = false;
//遍历数组
for (int i = 0; i < 6; i++) {
System.out.println("请输入第" + (i + 1) + "个红球的数字.(输入区间为1~33)");
number = importNumber(number);
//判断数组是否在输入区间范围
if (number > 0 && number <= 34) {
//引入函数判断是否重复
flage = judge(arr, number);
if (!flage) {
//没有重复将数字赋值给数组
arr[i] = number;
} else {
System.out.println("输入了相同的参数");
}
} else {
System.out.println("输入的范围错误");
}
}
}
public static void importBlueArr1(int[] arr) {
int number = 0;
System.out.println("请输入蓝球数字(输入区间为1~16)");
number = importNumber(number);
if (number > 0 && number <= 16) {
arr[6] = number;
} else {
System.out.println("输入范围有误");
}
}
//对比随机生成的红色数字和输入红色的数字
public static int comparisonRed(int[] arr, int[] arr1) {
//定义一个统计变量
int x = 0;
//遍历第一个数组
for (int i = 0; i < arr.length - 1; i++) {
//遍历第二个数组j=i确保比对的索引是一样的
for (int j = i; j < arr.length - 1; j++) {
if (arr[i] == arr1[j]) {
x++;
}
}
}
return x;
}
//对比随机生成的蓝色数字和输入蓝色的数字
public static int comparisonBlue(int[] arr, int[] arr1) {
//定义一个统计变量
int x = 0;
//使用三元运算符true则+1,否则输出0
return (arr[6] == arr1[6]) ? (++x) : x;
}
//判断中了几等奖
public static void award(int x, int y) {
if (x == 6 && y == 1) {
System.out.println("一等奖:1000万元");
} else if (x == 6 && y == 0) {
System.out.println("二等奖:500万元");
} else if (x == 5 && y == 1) {
System.out.println("三等奖:3000元");
} else if (x >= 4 && x <= 5) {
System.out.println("四等奖:200元");
} else if (x >= 3 && x <= 4) {
System.out.println("五等奖:10元");
} else {
System.out.println("六等奖:5元");
}
}
}