猜数字游戏

来源:互联网 发布:unity3d粒子系统教程 编辑:程序博客网 时间:2024/05/01 19:38
猜数字
很多人都玩过这个游戏:甲在心中想好一个数字,乙来猜。每猜一个数字,甲必须告诉他是猜大了,猜小了,还是刚好猜中了。

下列的代码模拟了这个过程。其中用户充当甲的角色,计算机充当乙的角色。为了能更快地猜中,计算机使用了二分法。

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; //填空}}}
图示: