需求如下:
1.投注号码有6个红球号码和一个蓝球号码组成
2.红球号码由1-33选择,篮球号码从1-6中选择
3.一等奖(6+1),二等奖(6+0),三等奖(5+1),四等奖(4+1或5+0)五等奖(3+1或者4+0),六等奖(1+1,2+1,0+1)
分析如下:
1.随机生成六个红球和1个篮球作为中奖号码存储在数组当中
2.用户输入购买的六个号码,并判断是否符合规范
3.用于比较用户输入数据和中奖号码,得到中奖个数
4.根据题目要求得到中奖结果,
具体实现代码如下
.
package com.company.LotteryDrawBall;
import java.util.Random;
import java.util.Scanner;
//双色球抽奖系统需求如下:
/*
1.投注号码有6个红球号码和一个蓝球号码组成
2.红球号码由1-33选择,篮球号码从1-6中选择
3.一等奖(6+1),二等奖(6+0),三等奖(5+1),四等奖(4+1或5+0)五等奖(3+1或者4+0),六等奖(1+1,2+1,0+1)
*/
public class Main {
public static void main(String[] args) {
//1.首先随机生成六个红球和一个蓝球作为中奖号码存储在数组中
int[] winningLottery = createNumber();
//打印测试
for (int i = 0; i < winningLottery.length; i++) {
System.out.print(winningLottery[i]+" ");
}
System.out.println("---------------");
//2.用户输入购买的六个号码,并判断是否符合规范
int[] userInput = userInputNumber();
//打印测试
// for (int i = 0; i < userInput.length; i++) {
// System.out.println(userInput[i]);
// }
//3.用于比较用户输入数据和中奖号码,得到中奖个数
//红球中奖号码的数量
int redCount = 0;
//蓝球中奖号码的数量
int blueCount = 0;
//判断红球的中奖数量
for (int i = 0; i < userInput.length-1; i++) {
int redNumber=userInput[i];
for (int j = 0; j < userInput.length-1; j++) {
if (redNumber==winningLottery[j]){
redCount++;
//如果找到了,退出内层循环
break;
}
}
}
//判断蓝球的中奖数量
int blueNumber=userInput[userInput.length-1];
if (blueNumber==winningLottery[winningLottery.length-1])
blueCount++;
// //打印测试
// System.out.println();
if (redCount==6&&blueCount==1)
System.out.println("恭喜你,获得一等奖");
else if (redCount==6&&blueCount==0)
System.out.println("恭喜你,获得二等奖");
else if (redCount==5&&blueCount==1)
System.out.println("恭喜你,获得三等奖");
else if ((redCount==4&&blueCount==1)||(redCount==5&&blueCount==0))
System.out.println("恭喜你,获得四等奖");
else if ((redCount==3&&blueCount==1)||(redCount==4&&blueCount==0))
System.out.println("恭喜你,获得五等奖");
else if ((redCount==1&&blueCount==1)||(redCount==2&&blueCount==1)||(redCount==0&&blueCount==1))
System.out.println("恭喜你,获得六等奖");
else System.out.println("谢谢参与");
}
public static int[] createNumber() {
//用于接收中奖号码
int[] arr = new int[7];
Random r = new Random();
//给六个红球中奖号码进行分配
for (int i = 0; i < arr.length - 1; ) {
int redNumber = r.nextInt(33) + 1;
boolean flag = contains(arr, redNumber);
if (!flag) {
arr[i] = redNumber;
i++;
}
}
//给出蓝球的中奖号码
int blueNumber = r.nextInt(6) + 1;
arr[arr.length - 1] = blueNumber;
return arr;
}
public static boolean contains(int[] arr, int number) {
//判断双色球的号码是否重复
for (int i = 0; i < arr.length - 1; i++) {
if (arr[i] == number) {
//如果在数组中找到该数据返回true
return true;
}
}
//反之返回false
return false;
}
public static int[] userInputNumber() {
int[] arr = new int[7];
Scanner sc = new Scanner(System.in);
//输入五个红球的号码
for (int i = 0; i < arr.length - 1; ) {
System.out.println("请输入第" + (i + 1) + "个红球:");
int redNumber = sc.nextInt();
boolean flag = contains(arr, redNumber);
if ((redNumber >= 1 && redNumber <= 33) && (!flag)) {
arr[i] = redNumber;
i++;
} else {
System.out.println("输入数据不合法或该双色球号已填写过");
}
}
//添加用户输入的蓝色球
for (int i = 0; i < 1; ) {
System.out.println("请输入第7个蓝球:");
int blueNumber = sc.nextInt();
if (blueNumber >= 1 && blueNumber <= 6) {
arr[arr.length - 1] = blueNumber;
i++;
} else
System.out.println("输入数据范围不合法");
}
return arr;
}
}