公牛和母牛(猜数字游戏)

news/2024/10/17 14:16:26/

猜数字(又称公牛和母牛)是一种古老的的密码破译类益智类小游戏,起源于 20 世纪中期,一般由两个人或多人玩,也可以由一个人和电脑玩。通常由两个人玩,一方出数字,一方猜。

游戏规则:出数字的人要想好一个没有重复数字的 4 个数,不能让猜的人知道。猜的人就可以开始猜。每猜一个数字,出数者就要根据这个数字给出 几 A 几 B,其中 A 前面的数字表示数字正确且位置也正确的数的个数,而 B 前的数字表示数字正确但位置不正确的数的个数。如正确答案为 5234 ,而猜的人猜   5346 ,则是 1A2B ,其中有一个 5 的位置对了,记为 1 ,而 3 和 4 这两个数字对了,而位置没对,因此记为 2 B,合起来就是 1A2B 。接着猜的人再根据出题者的几 A 几 B 继续猜,直到猜中(即4 A 0 B)为止。

要求:

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

 2、猜数字(用户输入):

      2-1:只能输入一个数字字符串

      2-2:字符串中的字符不能重复

      2-3:只能输入 4 个字符(如果字符个数不等于 4 个,需要用户重新输入)

      注意:如果用户没有输入正确的话,不会进入比较环节

3、用户猜的数字和电脑出的数字比较,给出结果几A几B,如果结果不是 4A0B,需要用户重新输入,直到 4A4B为止

public class Games{public static void main(String[] args){System.out.println("猜数字游戏开始咯!");// 1.出数字(由电脑产生4个0-9随机数,且不重复)/*随机数 Math.random()  生成 0-1之间的浮点型随机数整型随机数a-b--> a + 0~(b-a)   (int)(Math.random() * (b - a + 1) + a)*/// 创建数组int[] suiJiShu = new int[4];// 遍历随机数数组的同时 放随机数// 此时i可以表示 数组元素的下标 计数变量for (int i = 0; i < suiJiShu.length; i++){// 生成 0-9 随机数 放入数组下标为i处suiJiShu1[i] = (int)(Math.random() *( 9 - 0 + 1) + 0);// 去重 i下标的元素,和所有下标小于i的元素做比较,如果重复// 重新赋值for(int j = 0;j < i;j++){// j 表示 比i小的所有下标if(suiJiShu[i] == suiJiShu[j]){// 循环回滚i--;break;}}}System.out.println("电脑产生的数字:");for(int i = 0;i < suiJiShu.length;i++){System.out.print(suiJiShu[i] + " ");}// 2.猜数字(用户输入)// 用户输入存在限制/*1.只能输入一个数字字符串2.字符串中的字符不能重复3.只能给4个字符(如果字符个数不等于4个,需要请用户重新输入)PS:如果用户没有输入正确的话,不会进入比较环节*/// 输入器Scanner input = new Scanner(System.in);char[] inputChars;// 步骤1:只要用户重新输入一次,输入的校验都需要再完成一次// 重复去执行步骤1--循环语句块while (true){// 用户输入System.out.println("请输入猜的数字:");String inputNum = input.next();// 字符串转字符数组inputChars = inputNum.toCharArray();// 输入信息的校验 保证数据安全// 判断字符个数 如果不为4,请用户重新输入// inputChars.length != 4 说明 输入有误,请用户重新输入if(inputChars.length != 4){System.out.println("用户输入字符不为4");continue;}// 验证用户输入是否为数字字符boolean isContinue = false;for(int i = 0;i < inputChars.length;i++){// 不满足数字字符要求48-57if(inputChars[i] < 48 || inputChars[i] > 57){// 输入有误 此时应该让用户重新输入isContinue = true;break;}}if(isContinue){System.out.println("输入数据,不为数字字符");continue;}// 判断字符串是否重复for(int i = 0;i < inputChars.length;i++){for(int j = 0;j < i;j++){if(inputChars[i] == inputChars[j]){isContinue = true;break;}}}if(isContinue == false){System.out.println("用户输入的数据 是合法的");break;}System.out.println("输入数据,数字字符重复");// 3.用户猜的数字 和 电脑 出的数字对比,给出结果几A几B,如果结果不是4A0B,需要用户重新输入,知道4A0B为止// 判断 用户输入的信息和电脑产生的随机数 给出结果// 记录A 位置相同且数字相同的个数int countA = 0;// 记录B 位置不同但数字相同 的个数int countB = 0;for (int i = 0;i < suiJiShu.length;i++){for (int j = 0;j < inputChars.length;j++){if (suiJiShu[i] == inputChars.length - 48){if (i == j){countA++;}else {countB++;}}}}String info = countA + "A" + countB + "B";System.out.println(info);if(info.equals("4A0B")){System.out.println("成功");break;}else {System.out.println("请重新猜数字");}}}
}


http://www.ppmy.cn/news/206074.html

相关文章

sony xl39h android 4.3,够大够强悍 索尼巨屏旗舰XL39h真机试玩

够大够轻薄 索尼骁龙800巨屏旗舰XL39h图解 索尼这款跨界终端XL39h配备了6.44英寸融合索尼X-Reality图像处理技术的1080P高清屏幕&#xff0c;搭载2.2GHz主频的高通骁龙800系列处理器&#xff0c;内存组合为2GB内存16GB机身存储(可扩展)。拍照方面&#xff0c;则提供了800万像素…

lgg8配置_LGG8XThinQ参数配置-LG G8X ThinQ详细性能评测

LG G8X ThinQ是一款全新发布的机型,这款手机和iPhone12一样不赠送充电器,那么这款手机的参数配置是什么?有哪些值得入手的地方?小编为大家带来最新的手机性能评测,快来看看吧。 一、参数配置 手机型号 LG G8X ThinQ 手机屏幕 6.1英寸,3120x1440像素,双屏手机 手机性能 骁…

安排公牛

安排公牛 Description Fammer Johnson的公牛们非常喜欢打篮球。但它们都不愿意一起打篮球&#xff0c;因为所有公牛都认为其他的牛弱爆了。Fammer Johnson有N头牛&#xff08;我们把它们编号为1~N&#xff09;和M个牛棚&#xff08;我们把它们编号为1~M&#xff09;&#xff0c…

[索尼克WA]的GI技术

[索尼克WA]的GI技术&#xff08;1&#xff09;----对静态对象(Object)的GI 静止的对象GI&#xff0c;采用了事前离线计算&#xff0c;把计算结果绘制(烘培)到纹理&#xff08;Texture&#xff09;的方法。这种使用事前计算的GI信息烘培出来的纹理&#xff0c;在开发组内被称为[…

LeetCode 299 Bulls and Cows(公牛和母牛)(HashMap)

翻译 你在和朋友们玩一个叫做“公牛和母牛”的游戏&#xff1a;你写下一组数字&#xff0c;然后让你的朋友来猜它。每次你朋友做一个猜测&#xff0c;你根据他的猜测给一个提示&#xff1a;他在数字在值和位置上都猜对的数字&#xff0c;就叫做bulls&#xff08;公牛&#xff…

1896. 公牛数学

题目描述 公牛在数学方面比奶牛强很多&#xff0c;他们自称可以计算很大的整数之间的乘法&#xff0c;并得到精确的结果。农夫约翰想知道他们的答案是否正确。请你帮助他检查公牛的答案。读入2个正整数&#xff08;不大于10^40&#xff09;&#xff0c;计算他们的乘积&#xf…

oppo手机android 版本号,oppo手机怎么升级到安卓11

oppo手机怎么升级到安卓11&#xff1f;在最近&#xff0c;谷歌发布了Android 11系统&#xff0c;国内很多品牌的手机也可以陆续可以升级到安卓11系统&#xff0c;那oppo手机怎么升级为安卓11系统呢&#xff0c;在哪里升级到安卓11&#xff0c;下面就和小编一起来看看吧&#xf…

oppor15android10怎么降级,OPPOR15系统降级教程

www.netded.com发表时间: 2018-11-05 10:45 也过来说说咱们的这个OPPO R15手机的系统降级操作了&#xff0c;也就是大家常说的回退操作了&#xff0c;因为有的机友感觉系统升级之后并不是特别满意&#xff0c;所以想进行系统回退操作&#xff0c;想回退到原来的旧版本的系统&am…