猜数字游戏
2013-11-20 21:03
260 查看
猜数字
很多人都玩过这个游戏:甲在心中想好一个数字,乙来猜。每猜一个数字,甲必须告诉他是猜大了,猜小了,还是刚好猜中了。
下列的代码模拟了这个过程。其中用户充当甲的角色,计算机充当乙的角色。为了能更快地猜中,计算机使用了二分法。
很多人都玩过这个游戏:甲在心中想好一个数字,乙来猜。每猜一个数字,甲必须告诉他是猜大了,猜小了,还是刚好猜中了。
下列的代码模拟了这个过程。其中用户充当甲的角色,计算机充当乙的角色。为了能更快地猜中,计算机使用了二分法。
import java.util.Scanner; public class Test_3{ public static void main(String[] args){ System.out.println("请在心中想好一个数字(1-100),我来猜!"); System.out.println("我每猜一个数字,你要告诉我是--猜大了--,--猜小了--,还是--猜中--"); //通过scanner从控制台接收用户输入的数据 Scanner scanner = new Scanner(System.in); //初始化二分法的最大值和最小值,即二分法的范围 int v1 = 1; int v2 = 100; for(;;) { //使用二分法,获取中间数, int m = (v1 + v2) >> 2; // 位运算更高效 System.out.println("我猜是:" + m); System.out.println("1.猜的太大了"); System.out.println("2.猜的太小了"); System.out.println("3.猜对了!"); System.out.println("请选择:"); //这里用户输入数据,对计算机说是大了还是小了还是猜对了。 int user = Integer.parseInt(scanner.nextLine()); //如果才对,则结束无限循环,结束程序。 if(user == 3) break; //如果猜大了,将二分法的最大值范围减小到中间值-1,下一次判断的时候,只需要在1-49之间判断。 if(user == 1) v2 = m - 1; //填空 //如果猜小了,将二分法的最小值范围增加到中间值+1,下一次判断的时候,只需要在51-100之间判断。 if(user == 2) v1 = m + 1; //填空 } } }图示:
相关文章推荐
- UVA 10245 The Closest Pair Problem(传说中的分治法)
- JPEG2000和JPEG的比较
- 第十三周 使用递归函数输出最大公约数(第一次做 不知道对错 望高手指点)
- 循环引用问题
- 1.深入PHP变量存储结构
- sql server 取字符性日期
- 程序员的十层 成长之路
- 关于如何在matlab中添加新的工具箱的整理和心得
- 报数游戏
- 操作Excel导入的问题(转)
- java中判断用户是否为第一次登陆(在页面上进行控制)
- 读取加密的excel文档
- 测试code 代码片功能
- 第十三周 使用递归函数输出奇数的乘积
- 第一范式、第二范式及第三范式的定义与举例
- 一、简单的http抓包(微信公众网页登录模拟)
- namespaces
- 滚动数组
- LoadRunner中URL和HTML两种录制方式
- Android Ril 分析