![273b71b4fb476b56543df3748bc2094b.png](https://img-blog.csdnimg.cn/img_convert/273b71b4fb476b56543df3748bc2094b.png)
还记得昨天要写出“彩票-双色球”的程序,功能实现包括机器选号,人工自选,还包括开奖及奖品结算等功能。
用程序代码实现双色球功能,感觉就是在体现Java的编程思想或者说是优势,就是面向对象!将所要实现的功分为几个对象,然后分开解决,解决完成后进行简单的整合就可以实现整体功能。比如这次的双色球摇奖系统,
![9b2ae727350cf10c328c2ebd95701003.png](https://img-blog.csdnimg.cn/img_convert/9b2ae727350cf10c328c2ebd95701003.png)
将重要的要实现的功能比如图中的买彩票过程的“buy()”,开奖过程的“open”等,分开解决,最后通过方法整合在一起,这样的程序显得层次分明,能很快的定位问题所在,也方便进行维护等。不过虽然整体是面向对象,但最基础的仍是面向构建方法的过程,这时的前面学到循环结构,选择结构,方法构造等就起到了很大的作用。
因为是双色球,开奖和选择号码的过程都离不开多组的号码数,所以程序中很重要的一点就是关于的数组的知识,特别是数组的循环遍历
![58cce01a4ce5986a762038488a6047ed.png](https://img-blog.csdnimg.cn/img_convert/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();
}
}