您的位置:首页 > 其它

猜数字游戏

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: