需求:投注号码由6个红色球号码和1个蓝色球号码组成。红色球号码从1-33中选择﹔蓝色球号码从1-16中选择。
双色球抽奖:6个红球:1-33 1个蓝球 1-16
一等奖 中6+1
二等奖 中6+0
三等奖 中5+1
四等奖 中5+0
中4+1
五等奖 中4+0
中3+1
中2+1
六等奖 中1+1
中0+1
本人思路:使用三个方法完成需求:
1.myNumber()方法,用来键盘输入自己的抽奖号码,并存入数组中
2.createNumber()方法,用来创建中奖号码数组,注:前六个号码为红球,范围:1-33,不能重复,第七个号码为蓝球,范围:1-16,可以和前六个号码重复
3.level()方法,用来对比红球和蓝球相等个数,从而判断中奖等级
public class Test{
public static void main(String[] args) {
/* 双色球抽奖:6个红球:1-33 1个蓝球 1-16
一等奖 中6+1
二等奖 中6+0
三等奖 中5+1
四等奖 中5+0
中4+1
五等奖 中4+0
中3+1
中2+1
六等奖 中1+1
中0+1
* */
//1.生成中奖号码
int[] arr = creatNumber();
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
//2.输入自己号码
int[] brr = myNumber(arr);
for (int i = 0; i < brr.length; i++) {
System.out.print(brr[i] + " ");
}
//3.判断是否中奖
level(arr,brr);
}
private static int[] myNumber(int[] arr) {
Scanner sc = new Scanner(System.in);
System.out.println();
System.out.println("请输入你的抽奖号码:");
// mynumber 在1~33 唯一不重复
int[] brr = new int[arr.length];
for (int i = 0; i < brr.length; i++) {
//可以一个号一个号输入 并严格要求红球号码
brr[i] = sc.nextInt();
}
return brr;
}
public static int[] creatNumber(){
//红球数字不能重复
int[] arr = new int[7];
Random r = new Random();
for (int i = 0; i < arr.length - 1; ) {
boolean flag = true;
int value = r.nextInt(33) + 1;
for (int j = 0; j < i ; j++){
if (arr[j] == value){
flag = false;
}
}
if (flag){
arr[i] = value;
i++;
}
}
//生成蓝球号码放在最后一位
arr[arr.length - 1] = r.nextInt(16) + 1;
return arr;
}
public static void level(int[] arr,int[] brr){
//count记录红球相同的个数
int count = 0;
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1; j++) {
if (arr[i] == brr[j]){
count++;
//找到之后就没必要再比较了
break;
}
}
}
//flag记录蓝球是否相等 0不等 1相等
int flag = 0;
if (arr[arr.length - 1] == brr[brr.length - 1]){
flag = 1;
}
System.out.println();
System.out.println("中" + count + "+" + flag);
//level记录中奖等级
int level = 0;
if ((count == 1 && flag ==1) || (count == 0 && flag == 1)){
level = 6;
System.out.println("六等奖");
}else if ((count == 2 && flag == 1) || (count == 3 && flag == 1) || count ==4 && flag == 0){
level = 5;
System.out.println("五等奖");
}else if ((count == 4 && flag == 1) || count == 5 && flag == 0){
level = 4;
System.out.println("四等奖");
}else if (count == 5 && flag == 1){
level = 3;
System.out.println("三等奖");
}else if (count == 6 && flag == 0){
level = 2;
System.out.println("二等奖");
}else if (count == 6 && flag == 1){
level = 1;
System.out.println("一等奖");
}else {
System.out.println("谢谢惠顾");
}
}
}
输出结果:
思考:键盘输入方法,即myNumber()方法处可做精进,可以逐个号码录入,并判断每个号码是否符合条件(红球1-33且各不相同)