双色球业务分析:
- 双色球总共有7个球,六个红球和1个蓝球。
- 红球号码取值范围是1~33,且红球号码不能重复;蓝球的取值范围是1~16。
- 根据中奖号码,蓝球号码是否相同以及红球号码相同个数确认中奖等级
总体实现步骤分析:
- 根据双色球的中奖机制来看,需要两个方法,每个方法对应一个数组,数组中分别存放的是用户投注的号码组合以及系统随机号码组合
- 同时,需要定义一个判断数组值相等数,来确定是否中奖和中奖等级
- 在用户选择投注的时候,应该有确保用户投注红球是不重复数字以及投注数值的取值范围
- 系统的随机中奖号码红球的中奖号也应该不同
- 总体,三个主方法,两个判断方法
代码:
- 用户投注方法:
//用户选择号码 public static int[] userSelectNumber(int[] userNum){ String colour = "红色"; Scanner scanner = new Scanner(System.in); //键盘输入语句 //遍历数组,给数组赋值 for (int i = 0; i < userNum.length; i++) { if(i == 6){ colour = "蓝色"; } while(true) { //while死循环,直达赋值成功退出 System.out.println("请输入第" + (i + 1) + "个" + colour + "号码球的数字"); //提示键盘输入 int num = scanner.nextInt(); //接收键盘输入 int falg = judageNum(num, userNum, i); //由判断方法返回的falg确定赋值是否正确和成功 if (falg == 1){ //falg = 1,成功;退出循环 break; }else{ //falg = 0,失败;继续循环 System.out.println("该数字不符合要求,请重新输入"); } } } return userNum; //返回数组 }
- 用户投注选择号码判断:
//用户选择号码,判断号码取值是否正确 public static int judageNum(int num,int[] userNum,int i){ int falg = 0; if (i>=0 && i<=userNum.length-2){ //红色球赋值判断 if (num>=1 && num <=33){ //赋值取值范围 if (iscongfu(num,userNum,i) != -1){ //调用判断是否重复方法 userNum[i] = num; falg = 1; }else{ falg = 0; } }else { falg = 0; } }else { if (num>=1 && num <=16){ //蓝色球赋值判断 userNum[i] = num; falg = 1; }else { falg = 0; } } return falg; }
- 投注红球判断是否重复:
//不重复方法 public static int iscongfu(int num,int[]Arrays ,int i){ for (int j = 0; j < i ; j++) { if(Arrays[j]==num){ return -1; } } return num; }
- 系统随机中奖号码:
//系统随机数组 public static int[] createLuckNumber(){ int[] createNum = new int[7]; Random random = new Random(); for (int i = 0; i <= createNum.length-2; i++) { int num = random.nextInt(33)+1; if (iscongfu(num,createNum,i) != -1){ //调用不重复方法 createNum[i] = num; }else { i--; } } createNum[createNum.length-1] = random.nextInt(16)+1; return createNum; }
- 开始方法:
//开始方法:主要接收其他方法返回的数据之后方法的调用 public static void Start(){ //开场欢迎语 System.out.println("\t双色惊喜一瞬间,6000W带回家!"); //调用用户投注方法 int[] userNum = new int[7]; userNum = userSelectNumber(userNum); System.out.println("您投注的双色球号码:"); System.out.println(Arrays.toString(userNum)); //输出用户投注号码 int[] createNum = createLuckNumber(); //调用系统随机中奖号码 System.out.println("中奖号码为:"); System.out.println(Arrays.toString(createNum)); //输出中间号码 judge(userNum,createNum); //比较,确定是否中奖 }
- 中奖方法:
//比较两个数组的内容是否有相同的号码 public static void judge(int[] userNum,int[] createNum){ int count = 0; for (int i = 0; i < userNum.length-1; i++) { for (int j = 0; j < createNum.length-1; j++) { if (userNum[i] == createNum[j]){ count ++; break; } } } switch (count){ case 1: if (userNum[userNum.length-1] == createNum[createNum.length-1]){ System.out.println("恭喜你中了六等奖!"); System.out.println("现金五元!"); }else{ System.out.println("很遗憾,你没中奖!"); } break; case 2: if (userNum[userNum.length-1] == createNum[createNum.length-1]){ System.out.println("恭喜你中了六等奖!"); System.out.println("现金五元!"); }else { System.out.println("很遗憾,你没中奖!"); } break; case 3: if (userNum[userNum.length-1] == createNum[createNum.length-1]){ System.out.println("恭喜你中了六等奖!"); System.out.println("现金五元!"); }else{ System.out.println("很遗憾,你没中奖!"); } break; case 4: if (userNum[userNum.length-1] == createNum[createNum.length-1]){ System.out.println("恭喜你中了五等奖!"); System.out.println("现金10元!"); }else{ System.out.println("恭喜你中了五等奖!"); System.out.println("现金10元!"); } break; case 5: if (userNum[userNum.length-1] == createNum[createNum.length-1]) { System.out.println("恭喜你中了四等奖!"); System.out.println("现金200元!"); }else{ System.out.println("恭喜你中了四等奖!"); System.out.println("现金200元!"); } break; case 6: if (userNum[userNum.length-1] == createNum[createNum.length-1]) { System.out.println("恭喜你中了二等奖!"); System.out.println("现金最高500W!"); }else{ System.out.println("恭喜你中了三等奖!"); System.out.println("现金3000元!"); } break; case 7: System.out.println("恭喜你中了一等奖!"); System.out.println("现金最高1000W!"); break; default: System.out.println("很遗憾,你没中奖!"); } }
- 程序主方法:
public static void main(String[] args) { Start(); }
- 运行结果: