公牛和母牛

通常由两个人玩,一方出数字,一方猜。出数字的人要想好一个没有重复数字的4个数,不能让猜的人知道。猜的人就可以开始猜。每猜一个数字,出数者就要根据这个数字给出几A几B,其中A前面的数字表示位置正确的数的个数,而B前的数字表示数字正确而位置不对的数的个数。

比如出题的人出题0426,猜的人说0462,此时就是2A2B


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

        int[] intNumber=new int[4];//写出一个数组,用于表示随机的四位数
        for (int i = 0; i < intNumber.length; i++) {//i是下标
            int suijiNum=(int)(Math.random()*10);
            intNumber[i]=suijiNum;
            for (int j = 0; j < i; j++) {
                if (intNumber[j]==intNumber[i]){//此处用于避免数字重复
                    i--;
                    break;
                }
            }
        }
        for (int i = 0; i < intNumber.length; i++) {
            System.out.print(intNumber[i]+"");
        }
        System.out.println();

2.猜数字(用户输入)

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

        char zero=48;
        char nine=57;
        Scanner input=new Scanner(System.in);
        System.out.println("请输入4位数");
all:for (;;){
        all:for (;;){
            String str=input.next();
            char[] chars=str.toCharArray();
            for (int i = 0; i < chars.length; i++) {//i下标
                if (chars.length!=4){//超过4个字符
                    System.out.println("请重新输入");
                    continue all;
                }
                if (chars[i]>57||chars[i]<48){//不是0-9的范围
                    System.out.println("请重新输入");
                    continue all;
                }
                for (int j = 0; j < chars.length; j++) {
                    if ((i!=j)&&chars[i]==chars[j]){
                        System.out.println("请重新输入");
                        continue all;
                    }
                }
            }
            int A=0;//a数字对位置对
            int B=0;//b数字对位置错
            for (int i = 0; i < chars.length; i++) {
                if ((chars[i]-48)==intNumber[i]){
                    A++;
                }
                for (int j = 0; j < intNumber.length; j++) {
                    if ((chars[j]-48)==intNumber[i]&&(i!=j)){
                        B++;
                    }
                }
            }
}

3.用户猜的数字 和 电脑 出的数字对比,给出结果几A几B

System.out.println(A+"A"+B+"B");
if (A==4){
System.out.print("答对!"+str);
break;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值