java双色球

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();
	}
	
	

}

猜你喜欢

转载自blog.csdn.net/qq_41532872/article/details/84933167