1.项目需求:
双色球投注区分为红色球号码区和蓝色球号码区,
红色球号码区由1-33共33个号码组成,蓝色球号码区由1-16共16个号码组成。
投注时选择6个红球号码和1个蓝球号码组成一注进行单式投注,每注金额2元。
一等奖:投注号码与当期开奖号码全部相同(顺序不限,下同),即中奖;
二等奖:投注号码与当期开奖号码中的6个红色球号码相同,即中奖;
三等奖:投注号码与当期开奖号码中的任意5个红色球号码和1个蓝色球号码相同,即中奖;
四等奖:投注号码与当期开奖号码中的任意5个红色球号码相同,或与任意4个红色球号码和1个蓝色球号码相同,即中奖;
五等奖:投注号码与当期开奖号码中的任意4个红色球号码相同,或与任意3个红色球号码和1个蓝色球号码相同,即中奖;
六等奖:投注号码与当期开奖号码中的1个蓝色球号码相同,即中奖。
显示中奖结果的同时显示您一共下注人民币??元,累计中奖人民币??元
工程目录结构:
贴上代码:
1.DoubleBallClient.java 客户端类
package com.bjsxt.ball.client;
import java.util.Arrays;
import java.util.Scanner;
//import com.bjsxt.ball.service.DoubleBallService;
//import com.bjsxt.ball.service.impl.DoubleBallServiceImpl;
import com.bjsxt.ball.util.DoubleUtil;
/**
* 双色球客户端
*@author 莱格
*/
public class DoubleBallClient {
static Scanner in = new Scanner(System.in);
//static DoubleBallService db = new DoubleBallServiceImpl();
static int input = 0;
static DoubleUtil du = DoubleUtil.getInstance();
static int[] arr;
static int price = 0;
static int count;
public static void main(String[] args) {
do {
System.out.println("********欢迎进入双色球福利彩票系统********");
System.out.println("\t"+"1.购买彩票");
System.out.println("\t"+"2.查看开奖");
System.out.println("\t"+"3.退出");
System.out.println("\t"+"4.查看已购买的彩票");
System.out.println("********************************");
System.out.print("请选择菜单:");
input = in.nextInt();
switch (input) {
case 1:
arr = du.select(arr);
count = du.selectNumber();//购买的注数
System.out.println("合计金额为"+count*2+"元!");
//du.selectBall(arr);
continue;
case 2:
if (arr == null) {
//System.out.println(Arrays.toString(arr));
System.out.println("您还没有选号,请先选号");
arr = du.select(arr);
count = du.selectNumber();//购买的注数
System.out.println("合计金额为"+count*2+"元!");
}
String x = du.selectBall(arr);
System.out.println("你购买的彩票是:"+x);
price = du.JugeRedBall(arr);//判断是否中奖
System.out.println("您的中奖金额为"+juge(count)+"元");
arr = null;//开完一次奖将其制空,释放内存,进行下一次购买
continue;
case 3:
System.out.println("谢谢使用!");
return;
case 4:
String s = du.selectBall(arr);
if (s.equals("null")) {
System.out.println("对不起您还没有购买彩票!请先购买!");
arr = du.select(arr);
count = du.selectNumber();//购买的注数
System.out.println("合计金额为"+count*2+"元!");
}
s = du.selectBall(arr);
System.out.println("你购买的彩票是:"+s);
continue;
default:
System.out.println("输入错误!");
}
} while (true);
}
/**
*
* 用于判断中了多少钱
* */
public static int juge(int count) {
//int x = du.selectNumber();
if(price == 1) {
return 5000000*count;
}else if(price == 2) {
return 1000000*count;
}else if(price == 3) {
return 20000*count;
}else if(price == 4) {
return 2000*count;
}else if(price == 5) {
return 200*count;
}else if(price == 6) {
return 10*count;
}else {
return 0;
}
}
}
2.DoubleUtil工具类
package com.bjsxt.ball.util;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
import com.bjsxt.ball.client.DoubleBallClient;
/**
* 双色球工具包
*
* @author 莱格
*/
public class DoubleUtil {
/**
* 双重检查锁实现单例模式
*/
private DoubleUtil() {
}// 私有构造器不让其创建对象
private static DoubleUtil instance = null;
// 使用双向检查锁
public static DoubleUtil getInstance() {
if (instance == null) {
DoubleUtil du;
synchronized (DoubleUtil.class) {
du = instance;
if (du == null) {
synchronized (DoubleUtil.class) {
if (du == null) {
du = new DoubleUtil();
}
}
instance = du;
}
}
}
return instance;
}
/**
* 用于判断是否中奖
*/
public int JugeRedBall(int[] arr1) {
//DoubleBallService ballService = new DoubleBallServiceImpl();
// int[] arr1 = ballService.selectBall();
System.out.print("本期开奖号码为:");
int[] arr2 = DoubleUtil.getInstance().newPond();
int count = 0;
for (int i = 0; i < arr1.length - 1; i++) {
for (int j = 0; j < arr2.length - 1; j++) {
if (arr1[i] == arr2[j]) {
count++;
}
}
}
if (count == 2 && (arr1[arr1.length - 1] == arr2[arr2.length - 1])) {
System.out.println("恭喜你获得六等奖");
return 6;
} else if (count == 3) {
System.out.println("恭喜你获得六等奖");
return 6;
} else if (count == 3 && (arr1[arr1.length - 1] == arr2[arr2.length - 1])) {
System.out.println("恭喜你获得五等奖");
return 5;
} else if (count == 4) {
System.out.println("恭喜你获得五等奖");
return 5;
} else if (count == 4 && (arr1[arr1.length - 1] == arr2[arr2.length - 1])) {
System.out.println("恭喜你获得四等奖等奖");
return 4;
} else if (count == 5) {
System.out.println("恭喜你获得4等奖");
return 4;
} else if (count == 5 && (arr1[arr1.length - 1] == arr2[arr2.length - 1])) {
System.out.println("恭喜你获得三等奖等奖");
return 3;
} else if (count == 6) {
System.out.println("恭喜你获得二等奖");
return 2;
} else if (count == 6 & (arr1[arr1.length - 1] == arr2[arr2.length - 1])) {
System.out.println("恭喜你获得一等奖");
return 1;
} else {
System.out.println("对不起你没有中奖!");
return 0;
}
}
/**
* 购买的注数
*/
public int selectNumber() {
Scanner input = new Scanner(System.in);
System.out.print("请输入购买的注数:");
int in = input.nextInt();
return in;
}
/**
* 判断中了多少奖金
*/
/**
* 生成奖池
*/
public int[] newPond() {
int[] arr = new int[7];
// Random r = new Random();
// 生成红色球
for (int i = 0; i < arr.length - 1; i++) {
int x = (int) (Math.random() * 33 + 1);
// int x = r.nextInt(32)+1;
if (x >= 1 && x <= 33) {
arr[i] = x;
}
}
// 生成蓝色球
for (int i = 0; i <= arr.length - 1; i++) {
int y = (int) (Math.random() * 33 + 1);
arr[i] = y;
}
int y = (int) (Math.random() * 17 + 1);
if (y >= 1 && y <= 16) {
arr[arr.length - 1] = y;
}
System.out.println(Arrays.toString(arr));
return arr;
}
/**
*
* 获得键盘输入,进行自选彩票
*/
public int[] getInput() {
int[] arr = new int[7];
int ticket;
Scanner in = new Scanner(System.in);
for (int i = 0; i < arr.length - 1; i++) {
System.out.print("请输入红色球:");
ticket = in.nextInt();
if (ticket > 0 && ticket <= 33) {
arr[i] = ticket;
}
}
System.out.print("请输入蓝色球:");
ticket = in.nextInt();
if (ticket > 0 && ticket <= 16) {
arr[arr.length - 1] = ticket;
}
return arr;
}
/**
* 查看已购买的彩票号码
*/
public String selectBall(int[] arr) {
// int[] arr1 = new int[];
// for (int i = 0; i < arr.length; i++) {
// arr1[i] = arr[i];
// }
return Arrays.toString(arr);
}
/**
* 机选或自选
*/
public int[] select(int[] arr) {
System.out.println("\t"+"1.机选");
System.out.println("\t"+"2.自选");
Scanner in = new Scanner(System.in);
System.out.print("请输入:");
int input = in.nextInt();
if (input == 1) {
System.out.println("机选");
arr = newPond();
} else if (input == 2) {
System.out.println("自选");
arr = getInput();
} else {
System.out.println("请输入正确的命令");
}
return arr;
}
}
小结:由于水平有限,代码质量不够好,生成的彩票号码会发生重复,bug修复中。。。