import java.util.Scanner;
public class shaungseqiu {
public static void main(String[] args) {
int totalMoney = 0;
int price = 2;
int count = 0;
boolean isBuy = false;
int num[] = null;
do {// 做无限循环
System.out.println("~~~~~~~~~~欢迎进入双色球彩票系统~~~~~~~~~~~");
System.out.println("\t1.购买彩票");
System.out.println("\t2.查看开奖");
System.out.println("\t3.退出");
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("请选择:");
Scanner sc = new Scanner(System.in);
int chose = sc.nextInt();
switch (chose) {
case 1:
//System.out.println("开始购买彩票");
System.out.println("你要买多少注");
count = sc.nextInt();// 买多少注
totalMoney = count * price;// 下注需要的钱数
// 开始选择号码6个红球和1个篮球
num = new int[7];
for (int i = 0; i < num.length; i++) {
int red;
int blue;
if (i < num.length - 1) {// 选红色的号码,要一个一个输入,不能一起输入
System.out.println("请输入6个红色的号码(数字为1-33),第"+(i+1)+"个红色球号为");
red = sc.nextInt(33);
num[i] = red;
} else {// 选蓝色的号码
System.out.println("请输入1个蓝色的号码(数字为1-16)");
blue = sc.nextInt(16);
num[i] = blue;
}
}
// 输出买的彩票信息;
System.out.println("你一共花了[" + count + "]一共要[" + totalMoney + "元,所选的号码为:");
for (int i = 0; i < num.length; i++) {
System.out.print("你选的红色号码W为:");
if(i<num.length-1){
System.out.print(num[i]+",");
}
else System.out.print("你选的蓝色号码为"+num[i]);
}
System.out.println();
isBuy = true;
break;
case 2:
System.out.println("查看开奖系统");
if (isBuy) {
isBuy = false;
int luckNum[] = getLuckNum();
for (int n : num) {
System.out.println(n + "\t");
}
System.out.println();
System.out.println("当期的中奖号码为:");
for (int n : luckNum) {
System.out.print(n + ",");
}
System.out.println();
int result = getCompareResult(num, luckNum);
if (result == 1) {
System.out.println("[一等奖],共下注[" + count + "],投资了[" + totalMoney + "]元,获奖" + (500 * count) + "万元");
} else if (result == 2) {
System.out.println("[二等奖],共下注[" + count + "],投资了[" + totalMoney + "]元,获奖" + (400 * count) + "万元");
} else if (result == 3) {
System.out.println("[三等奖],共下注[" + count + "],投资了[" + totalMoney + "]元,获奖" + (300 * count) + "元");
} else if (result == 4) {
System.out.println("[四等奖],共下注[" + count + "],投资了[" + totalMoney + "]元,获奖" + (200 * count) + "元");
} else if (result == 5) {
System.out.println("[五等奖],共下注[" + count + "],投资了[" + totalMoney + "]元,获奖" + (100 * count) + "元");
} else if (result == 6) {
System.out.println("[六等奖],共下注[" + count + "],投资了[" + totalMoney + "]元,获奖" + (5 * count) + "元");
} else {
System.out.println("哈哈哈 ,你没得奖,共下注[" + count + "],投资了[" + totalMoney + "]元");
}
} else {
System.out.println("请先购买彩票");
}
break;
case 3:
System.out.println("谢谢使用");
return;
default:
System.out.println("输入错误");
}
} while (true);
}
// 生成一个随机的中奖号码
public static int[] getLuckNum() {
int luckNum[] = new int[7];
for (int i = 0; i < luckNum.length; i++) {
if (i < luckNum.length - 1) {
luckNum[i] = (int) (Math.random() * 33) + 1;
} else {
luckNum[i] = (int) (Math.random() * 16) + 1;
}
}
return luckNum;
}
// 计算 获奖的等级 所买的彩票 当期中奖的号码
public static int getCompareResult(int num[], int luckNum[]) {
// 查看中奖的号码
int luckLevel = 0;
int redEqualCount = 0;
int blueEqualCount = 0;
for (int i = 0; i < num.length; i++) {//买的号码与中奖的号码做对比
if (i < num.length - 1) {//遍历自己买号码
int r = num[i];
for (int j = 0; j < luckNum.length - 1; j++) {
if (r == luckNum[j])
redEqualCount++;
}
} else {
if (num[num.length - 1] == luckNum[luckNum.length-1])
blueEqualCount++;
}
}
// 判断中奖的等级(根据中奖规则)
if (redEqualCount == 6 && blueEqualCount == 1)
luckLevel = 1;
else if (redEqualCount == 6)
luckLevel = 2;
else if (redEqualCount == 5 && blueEqualCount == 1)
luckLevel = 3;
else if ((redEqualCount == 5) || (redEqualCount == 4 && blueEqualCount == 1))
luckLevel = 4;
else if ((redEqualCount == 5) || (redEqualCount == 3 && blueEqualCount == 1))
luckLevel = 5;
else if (blueEqualCount == 1)
luckLevel = 6;
return luckLevel ;//注意返回的值是luckLevel
}
}
项目反思:重点在于逻辑的思考;对业务要进行了解,其次要熟练数组,循环,判断,方法的使用.有机会把项目扩展一下
双色球2;
import java.util.Arrays;
import java.util.Scanner;
public class DoubleBall {
//双色球的数组 自选的双色球数组
static int[] dbBall = new int[6];
static int blueB = 0;
//正确的双色球数组
static int[] cdbBall = new int[6];
static int cblueB = 0;
//下注数
static int n = 0;
//单注奖金
static int money = 5000000;
/**
* 彩票主页
*/
public static void index(){
System.out.println("------尚学堂彩票站-------");
System.out.println(" 1:买彩票");
System.out.println(" 2:开奖");
System.out.println(" 3:退出");
System.out.println("----------------------");
Scanner sc = new Scanner(System.in);
System.out.println("请选择[1-3]");
int num = sc.nextInt();
switch(num){
case 1:buyBall();break;
case 2:lottery();break;
case 3:System.out.println("欢迎下次光临");return;
default:System.out.println("请重新输入");index();
}
}
/**
* 买彩票
* @param args
*/
public static void buyBall(){
Scanner sc = new Scanner(System.in);
System.out.println("请下注 1注2元");
//下注的数字
n = sc.nextInt();
System.out.println("1:机选 2:手选");
int num = sc.nextInt();
if(num==1){
buyBall1(); //机选
}else if(num==2){
buyBall2(dbBall); //手选
}else{
System.out.println("数字有误");
buyBall();
}
}
/**
* 机选
*/
public static void buyBall1() {
//红球的范围1-33 不能重复 总共6个
int count = 0;
for(int i=0;;i++){
boolean flag = true;//状态值,初始值为true
int red = (int)(Math.random()*33)+1;
for(int j = 0;j<dbBall.length;j++){
//开始判断是否有重复的球
if(red==dbBall[j]){
flag=false; //如果有重复值,flag变为false
break;
}
}
//判断随机数是否有重复,flag为true代表没有重复
if(flag){
dbBall[count++] = red;
}
//当红球全都放入数组后,跳出大的循环
if(dbBall[5]!=0){
break;
}
}
//蓝球的范围1-16 总共1个
blueB = (int)(Math.random()*16)+1;
Arrays.sort(dbBall); //数组排序
System.out.println("机选号码:"+Arrays.toString(dbBall)+"["+blueB+"]");
index();//返回主界面
}
/**
* 手选
*/
public static void buyBall2(int[] dbBall) {
}
/**
* 开奖
* @param args
*/
public static void lottery(){
//机器生成正确的彩票号码
int count = 0;
for(int i=0;;i++){
boolean flag = true;//状态值,初始值为true
int red = (int)(Math.random()*33)+1;
for(int j = 0;j<cdbBall.length;j++){
//开始判断是否有重复的球
if(red==cdbBall[j]){
flag=false; //如果有重复值,flag变为false
break;
}
}
//判断随机数是否有重复,flag为true代表没有重复
if(flag){
cdbBall[count++] = red;
}
//当红球全都放入数组后,跳出大的循环
if(cdbBall[5]!=0){
break;
}
}
//蓝球的范围1-16 总共1个
cblueB = (int)(Math.random()*16)+1;
Arrays.sort(cdbBall); //数组排序
System.out.println("开奖号码:"+Arrays.toString(cdbBall)+"["+cblueB+"]");
winningPrize();
}
/**
* 中奖功能
*/
public static void winningPrize(){
int count = 0;
for(int i=0;i<dbBall.length;i++){ //机选号码
for(int j=0;j<cdbBall.length;j++){
if(dbBall[i]==cdbBall[j]){
count++; //红球正确个数的计数器
break;
}
}
}
//蓝球 的判断
boolean blue = (blueB == cblueB);
if(count==6&&blue){
System.out.println("一等奖:"+(n*money));
}else if(count==6){
System.out.println("二等奖:"+(n*money*0.25));
}else if(count==5&&blue){
System.out.println("三等奖:"+(n*3000));
}else if(count==5||(count==4&&blue)){
System.out.println("四等奖:"+(n*200));
}else if(count==4||(count==3&&blue)){
System.out.println("五等奖:"+(n*10));
}else if(blue){
System.out.println("六等奖:"+(n*5));
}else{
System.out.println("未中奖,谢谢惠顾");
}
index();
}
public static void main(String[] args) {
index();
}
}