java三色球问题_Java的011天,一切尽在代码中

273b71b4fb476b56543df3748bc2094b.png

还记得昨天要写出“彩票-双色球”的程序,功能实现包括机器选号,人工自选,还包括开奖及奖品结算等功能。

用程序代码实现双色球功能,感觉就是在体现Java的编程思想或者说是优势,就是面向对象!将所要实现的功分为几个对象,然后分开解决,解决完成后进行简单的整合就可以实现整体功能。比如这次的双色球摇奖系统,

9b2ae727350cf10c328c2ebd95701003.png

将重要的要实现的功能比如图中的买彩票过程的“buy()”,开奖过程的“open”等,分开解决,最后通过方法整合在一起,这样的程序显得层次分明,能很快的定位问题所在,也方便进行维护等。不过虽然整体是面向对象,但最基础的仍是面向构建方法的过程,这时的前面学到循环结构,选择结构,方法构造等就起到了很大的作用。

因为是双色球,开奖和选择号码的过程都离不开多组的号码数,所以程序中很重要的一点就是关于的数组的知识,特别是数组的循环遍历

58cce01a4ce5986a762038488a6047ed.png

也用到了不少类似上图这种for-each循环遍历的功能,真的是在数组结构中发挥了不少作用。

继续加油!

package week02;

/**
 * 双色球顾名思议是由红球和蓝球两部份组成,
 * 每组号码由6个红球和1个蓝球组成 ,
 * 红球是由01到33个号码中选择,蓝球是由01到16个号码中选择。 
 */
import java.util.Scanner;

public class Dcbl {
	int num;
	int[] userNumbers = new int[7];
	int[] luckNumbers = new int[7];

	/*起始菜单*/
	public void printMenu() {
		System.out.println(
				"nn~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n1、购买彩票n2、中奖查询n3、退出n请输入数字选择菜单:n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
	}

	/*
	 * 购买的方法
	 */
	public void buy() {
		System.out.println("n请输入下注的数量");
		Scanner scanner = new Scanner(System.in);
		num = scanner.nextInt();
		System.out.println("请输入对应数字选择机选或者手动选择:");
		System.out.println("①:机选");
		System.out.println("②:手动选择");
		int choice = scanner.nextInt();
		switch (choice) {
			/* 机选号码的方式 */
		case 1:
			System.out.println("机选号码:");
			userNumbers = findRandomNumber();//机选方法
			show();
			break;
			/* 手选号码的方式 */
		case 2:
			System.out.println("手选号码:");
			findUserNumber();//手选方法
			show();
			break;
		default:
			System.out.println("无效!请以正确的姿势重新选择!");
			break;
		}
	}

	/*选号完成后展示选择的号码组及花费金额*/
	public void show() {
		System.out.println("您一共购买了" + num + "注彩票,一共花费了" + num * 2 + "元。n所选号码为:");
		for (int n : userNumbers) {
			System.out.print(n + "t");
		}
		System.out.println();
	}

	/*机选随机号码的方法*/
	public int[] findRandomNumber() {
		//共7组号码
		int[] numbers = new int[7];
		//6组1-33之间的红色球号码
		for (int i = 0; i < 6; i++) {
			numbers[i] = (int) (Math.random() * 33 + 1);
		}
		//1组1-16之间的蓝色球号码
		numbers[6] = (int) (Math.random() * 16 + 1);
		return numbers;
	}

	/*手选指定号码的方法*/
	public void findUserNumber() {
		Scanner scanner = new Scanner(System.in);
		for (int i = 0; i < 6; i++) {
			System.out.println("第" + (i + 1) + "个红球;请输入一个【1-33】之间的数");
			userNumbers[i] = scanner.nextInt();
		}
		System.out.println("给篮球选择数吧,请选择一个【1-16】之间的数");
		userNumbers[6] = scanner.nextInt();

	}

	/**
	 * 开奖的方法
	 */
	public void open() {
		System.out.println("您已购买的彩票号为:");
		for (int n : userNumbers) {
			System.out.print(n + "t");
		}
		System.out.println();
		luckNumbers = findRandomNumber();
		System.out.println("n当前开奖号码为:");
		for (int n : luckNumbers) {
			System.out.print(n + "t");
		}
		System.out.println();
		int redCount = 0;
		int blueCount = 0;
		for (int i = 0; i < 7; i++) {
			if (i < 6) {
				for (int j = 0; j < 6; j++) {
					if (luckNumbers[i] == userNumbers[j]) {
						redCount++;
					}
				}
			} else {
				if (luckNumbers[6] == userNumbers[6]) {
					blueCount++;
				}
			}
		}

		if (redCount == 6 && blueCount == 1) {
			System.out.println("n恭喜您,荣获一等奖,奖金500万元!");
		} else if (redCount == 6) {
			System.out.println("n恭喜您,荣获二等奖,奖金100万元!");
		} else if (redCount == 5 && blueCount == 1) {
			System.out.println("n恭喜您,荣获三等奖,奖金3000元!");
		} else if (redCount == 5 || (redCount == 4 && blueCount == 1)) {
			System.out.println("n恭喜您,荣获四等奖,奖金200元!");
		} else if (redCount == 4 || (redCount == 3 && blueCount == 1)) {
			System.out.println("n恭喜您,荣获五等奖,奖金10元!");
		} else if ((redCount == 2 && blueCount == 1) || (redCount == 1 && blueCount == 1) || blueCount == 1) {
			System.out.println("n恭喜您,荣获六等奖,奖金5元!");
		} else {
			System.out.println("n很遗憾,本次没有中奖!");
		}
	}

	/*开始之后,由菜单选择然后执行对应的方法*/
	public void startGame() {
		while (true) {
			printMenu();
			System.out.println();
			Scanner scanner = new Scanner(System.in);
			int choice = scanner.nextInt();
			switch (choice) {
			case 1:
				System.out.println("购买彩票>>>");
				buy();
				break;
			case 2:
				System.out.println("查看开奖>>>");
				open();
				break;
			case 3:
				System.out.println("谢谢使用!");
				System.exit(0);
				break;
			default:
				System.out.println("输入有误,请重新输入!");
				break;
			}

		}
	}

	/*执行的主函数*/
	public static void main(String[] args) {
		Dcbl dcbl = new Dcbl();
		System.out.println("nn¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥  欢迎来到  ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥n"
				+ "¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥    双色球系统    ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥n" + "¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥n");
		dcbl.startGame();
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值