Java模拟双色球案例

双色球业务分析:

  1. 双色球总共有7个球,六个红球和1个蓝球。
  2. 红球号码取值范围是1~33,且红球号码不能重复;蓝球的取值范围是1~16。
  3. 根据中奖号码,蓝球号码是否相同以及红球号码相同个数确认中奖等级

总体实现步骤分析:

  1. 根据双色球的中奖机制来看,需要两个方法,每个方法对应一个数组,数组中分别存放的是用户投注的号码组合以及系统随机号码组合
  2. 同时,需要定义一个判断数组值相等数,来确定是否中奖和中奖等级
  3. 在用户选择投注的时候,应该有确保用户投注红球是不重复数字以及投注数值的取值范围
  4. 系统的随机中奖号码红球的中奖号也应该不同
  5. 总体,三个主方法,两个判断方法

代码:

  1. 用户投注方法:
    //用户选择号码
        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; //返回数组
        }
  2.  用户投注选择号码判断:
    //用户选择号码,判断号码取值是否正确
        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;
        }

  3. 投注红球判断是否重复:
    //不重复方法
        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;
        }

  4. 系统随机中奖号码:
    //系统随机数组
        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;
        }

  5. 开始方法:
    //开始方法:主要接收其他方法返回的数据之后方法的调用
        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);   //比较,确定是否中奖
    
        }

  6. 中奖方法:
    //比较两个数组的内容是否有相同的号码
        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("很遗憾,你没中奖!");
            }
        }

  7. 程序主方法:
    public static void main(String[] args) {
            Start();
    
        }

  8. 运行结果:

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值