猜数字游戏,java代码(4A0B规则)

// 步骤1.出数字(由电脑产生4个0-9随机数,且不重复) (双色球)

        // 步骤2.猜数字(用户输入)
        // 用户输入存在限制
        /*
            1.只能输入一个数字字符串
            2.字符串中的字符不能重复
            3.只能给4个字符(如果字符个数不等于4个,需要请用户重新输入)
            PS:如果用户没有输入正确的话,不会进入比较环节
         */

        // 步骤3.用户猜的数字 和 电脑 出的数字对比,给出结果几A几B
        // ,如果结果不是4A0B,需要用户重新输入,知道4A0B为止



//1、先由电脑产生4个0-9随机数,且不重复
        int [] box=new int[4];

        //用循环去重复
        for (int i=0;i<box.length;i++){
            //分别定义数组中的每一个随机值
            box[i]=(int)(Math.random()*10);
            //判断随机生成后的数据是否互相重复
            for(int j=0;j<i;j++){
                //如果元素存在重复,则循环回滚,如果元素不重复则终止循环,输出数组
                if(box[i]==box[j]){
                    i--;
                   break;
                }
            }
        }
        //随机生成的数组输出
//        for(int i=0;i< box.length;i++){
//            System.out.print(box[i]+" ");
//        }



/*  -    2.猜数字(用户输入)
        用户输入存在限制
            1.只能输入一个数字字符串
            2.字符串中的字符不能重复
            3.只能给4个字符(如果字符个数不等于4个,需要请用户重新输入)
            PS:如果用户没有输入正确的话,不会进入比较环节
 */
        char[] chars;
       //创建一个死循环
       while (true){
           //先定义用户输入的输入器
           Scanner input=new Scanner(System.in);
           System.out.println("请输入4个随意组成的数字");
           String yongHu= input.next();
           //把用户输入的字符串转为字符数组
           chars=yongHu.toCharArray();
           //字符数组的长度
//           System.out.println("字符数组的长度");
//           System.out.println(chars.length);
             //对用户输入的数据进行验证,输入内容不符合条件则提示用户重新输入
                 //定义三个条件变量
                  int d=0;
                  int e=0;
                  int c=0;
          for(int i=0;i<chars.length;i++){
            //当用户输入的内容不是数字字串符时
            if(chars[i]<48||chars[i]>57){
                d++;
            }
            //当用户输入的字符不等于4位数
            if(chars.length!=4){
                e++;
            }
            //当用户输入的字符存在重复时
            for(int j=0;j<i;j++){
                if(chars[i]==chars[j]&&i!=j){
                   c++;
                    break;
                }
            }
         }
         if(d>0){
            System.out.println("输入内容不是数字字符串,请重新输入");
            continue;
         }
          if (e>0){
            System.out.println("您输入的不是4位数,请重新输入");
            continue;
         }
          if (c>0){
            System.out.println("存在重复的数字,请重新输入");
            continue;
          }
//          if(d==0&&e==0&&c==0){
//              continue;
//          }
        //输出核实数组内容是否正确
//        for(int i=0;i< chars.length;i++){
//            System.out.print(chars[i]+" ");
//        }
                   /*3.用户猜的数字 和 电脑 出的数字对比,给出结果几A几B
 如果结果不是4A0B,需要用户重新输入,知道4A0B为止*/
           //定义两个变量
           int counta=0;
           int countb=0;
           for(int i=0;i< box.length;i++){
               for (int j=0;j<box.length;j++){
                   if(box[i]==chars[j]-48){
                       if (i==j){
                           counta++;
                       }else {
                           countb++;
                       }

                   }
               }
           }
//      得出结果是多少,不是4A0B则循环继续
           String info = counta + "A" + countb + "B";
           System.out.println(info);
           if(info.equals("4A0B")){
               System.out.println("成功");
               break;
           }else {
               System.out.println("请重新猜数字");
           }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值