1. 双色球投注开奖小程序
a. 获取用户输入
红球:1-33中选择6个。(默认用户输入的号码不会重复)
蓝球:1-16中选择1个。
b. 随机生成中奖号码
1-33 中随机生成6个数,不能重复。
1-16 中随机生成1个数。
c. 中奖规则
红球一共6个,从1-33中抽取,六个互相不重复。
然后蓝球是从1-16中抽取一个数字,这整个组成的双色球开奖号码。
一等奖(6+1):红球33选6,蓝球16选1;
二等奖(6+0):红球33选6;
三等奖(5+1):红球33选5,蓝球16选1;
四等奖(5+0、4+1):红球33选5 或者 红球33选4,蓝球16选1;
五等奖(4+0、3+1):红球33选4 或者 红球33选3,蓝球16选1;
六等奖(2+1、1+1、0+1):红球33选2,蓝球16选1 或者 红球33选1,蓝球16选1 或者蓝球16选1;
2. Java 实现
a. 方法1. Array
package ColorBall.src.array;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
int[] buyRedBalls = buyRedBalls();
Scanner sc = new Scanner(System.in);
System.out.println("请输入下注的蓝球号码(1-16):");
int buyBlue = sc.nextInt();
int[] redBalls = getRedBalls();
Random r = new Random();
int blue = r.nextInt(16) + 1;
System.out.println("您下注的红球号码为:" + Arrays.toString(buyRedBalls));
System.out.println("您下注的蓝球号码为:" + buyBlue);
System.out.println("开奖的红球号码为:" + Arrays.toString(redBalls));
System.out.println("开奖的蓝球号码为:" + blue);
int redCount = checkBalls(redBalls, buyRedBalls);
System.out.println("中奖的红球个数:" + redCount);
int blueCount = buyBlue == blue ? 1 : 0;
System.out.println("中奖的蓝球个数:" + blueCount);
if (redCount == 6 && blueCount == 1) {
System.out.println("恭喜你中了一等奖");
} else if (redCount == 6) {
System.out.println("恭喜你中了二等奖");
} else if (redCount == 5 && blueCount == 1) {
System.out.println("恭喜你中了三等奖");
} else if (redCount == 5 || (redCount == 4 && blueCount == 1)) {
System.out.println("恭喜你中了四等奖");
} else if (redCount == 4 || (redCount == 3 && blueCount == 1)) {
System.out.println("恭喜你中了五等奖");
} else if ((redCount == 2 && blueCount == 1) || (redCount == 1 && blueCount == 1) || blueCount == 1) {
System.out.println("恭喜你中了六等奖");
} else {
System.out.println("感谢您为福利事业做出的贡献!");
}
}
public static int checkBalls(int[] redBalls, int[] buyBalls) {
int count = 0;
for (int i = 0; i < buyBalls.length; i++) {
for (int j = 0; j < redBalls.length; j++) {
if (buyBalls[i] == redBalls[j]) {
count++;
}
}
}
return count;
}
public static int[] buyRedBalls() {
int[] arr = new int[6];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < arr.length; i++) {
System.out.println("请输入第" + (i + 1) + "个红球(1-33):");
arr[i] = sc.nextInt();
}
Arrays.sort(arr);
return arr;
}
public static int[] getRedBalls() {
int[] arr = new int[6];
Random r = new Random();
int index = 0;
arr[index] = r.nextInt(33) + 1;
wc:
while (true) {
int num = r.nextInt(33) + 1;
for (int i = 0; i <= index; i++) {
if (num == arr[i]) {
continue wc;
}
}
arr[++index] = num;
if (index == 5) {
break wc;
}
}
Arrays.sort(arr);
return arr;
}
}
b. 方法2. HashSet
i. main
package ColorBall.src.hashset;
import java.util.HashSet;
public class test {
public static void main(String[] args) {
Ticket t = new Ticket();
t.buyTicket();
DoubleBall db = new DoubleBall();
db.randomNum();
db.show();
t.showTicket();
showResult(db,t);
}
public static void showResult(DoubleBall db, Ticket t){
HashSet<Integer> redBalls = db.getRedBalls();
HashSet<Integer> redNums = t.getRedNums();
int redCount = 0;
for(Integer num :redNums){
boolean flag = redBalls.contains(num);
if(flag){
redCount++;
}
}
int blueCount = 0;
Integer blueBall = db.getBlueBall();
Integer blueNums = t.getBlueNums();
if(blueBall==blueNums){
blueCount=1;
}
System.out.println("中奖的红球个数:"+redCount);
System.out.println("中奖的蓝球个数"+blueCount);
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==5 ||( redCount==4 && blueCount==1)){
System.out.println("恭喜你,中了四等奖");
}else if(redCount==4 ||( redCount==3 && blueCount==1)){
System.out.println("恭喜你,中了五等奖");
}else if((redCount==2 && blueCount==1)||(redCount==1 && blueCount==1) || blueCount==1){
System.out.println("恭喜你,中了六等奖");
}else{
System.out.println("感谢您为福利事业做出的贡献");
}
}
}
ii. ticket
package ColorBall.src.hashset;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
public class ticket {
private HashSet<Integer> redNums = new HashSet<>();
private Integer blueNums;
public HashSet<Integer> getRedNums() {
return redNums;
}
public Integer getBlueNums() {
return blueNums;
}
public void buyTicket() {
Scanner sc = new Scanner(System.in);
int i = 1;
while (true) {
System.out.println("请输入第" + i + "个红球号码:");
int redNum = sc.nextInt();
if (redNum >= 1 && redNum <= 33) {
boolean flag = redNums.add(redNum);
if (flag) {
i++;
if (i == 7) {
break;
}
} else {
System.out.println("你输入的号码重复了,请重新输入");
}
} else {
System.out.println("输入的号码无效,请重新输入");
}
}
while (true) {
System.out.println("请输入蓝球号码:");
int num = sc.nextInt();
if (num >= 1 && num <= 16) {
blueNums = num;
break;
} else {
System.out.println("输入的号码无效,请重新输入");
}
}
}
public void showTicket() {
Integer[] arr = new Integer[6];
redNums.toArray(arr);
Arrays.sort(arr);
String s = Arrays.toString(arr);
System.out.println("下注的红球号码是:" + s);
System.out.println("下注的蓝球号码是:" + blueNums);
}
}
iii. doubleBall
package ColorBall.src.hashset;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Random;
public class doubleBall {
private HashSet<Integer> redBalls = new HashSet<>();
private Integer blueBall;
public HashSet<Integer> getRedBalls() {
return redBalls;
}
public Integer getBlueBall() {
return blueBall;
}
public void randomNum() {
Random r = new Random();
while (true) {
int num = r.nextInt(33) + 1;
redBalls.add(num);
if (redBalls.size() == 6) {
break;
}
}
blueBall = r.nextInt(16) + 1;
}
public void show() {
Integer[] arr = new Integer[6];
redBalls.toArray(arr);
Arrays.sort(arr);
String s = Arrays.toString(arr);
System.out.println("开奖的红球号码是:" + s);
System.out.println("开奖的蓝球号码是:" + blueBall);
}
}