猜数字游戏

猜数字
很多人都玩过这个游戏:甲在心中想好一个数字,乙来猜。每猜一个数字,甲必须告诉他是猜大了,猜小了,还是刚好猜中了。

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

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值