根据一个火影忍者手游游戏写的一个推算

背景介绍:

	火影忍者手游有一个游戏是山中井野的心转身训练,游戏本质上还是一个猜数字的游戏。给定一个数,由用户猜,然后给出提示过大还是过小。可以采用取中方式,逐渐逼近目标数。有搜索一下类似的,但是都是先生成一个数,然后由用户自己猜,最后用户再猜这个数。但是我们这里反转对象,代码猜,用户来告诉代码是大是小。

需求分析:

用户应该首先输入一个范围,我们默认由0到输入的数区间内查找。

代码如下

尽量采用java原生api
public class CheckNumGame {


    private static int MAXINT = 0;

    private static int MININT = 0;

    public static void main(String[] args) {
        //true 是大了,false 是小了。
        Boolean flag = Boolean.TRUE;
        //输入流
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入理论上最大的数字");
        MAXINT = scanner.nextInt();
        int checkNum = checkNum(0, Boolean.TRUE);
        while (flag) {
            System.out.println("先猜结果是:" + checkNum);
            System.out.println("大了请输入1,小了请输入0,结束请输入9");
            int flagNum = scanner.nextInt();
            if (9 == flagNum) {
                flag = Boolean.FALSE;
            } else if (1 == flagNum) {
                checkNum = checkNum(checkNum, Boolean.TRUE);
            } else if (0 == flagNum) {
                checkNum = checkNum(checkNum, Boolean.FALSE);
            } else {
                System.out.println("输入错误,请重新输入");
            }
        }
    }

    /**
     * 根据最大的数字,输入的数字,和偏大偏小标记,计算取中数
     *
     * @param checkNum
     * @param flag
     * @return
     */
    private static int checkNum(int checkNum, Boolean flag) {
        if (0 == checkNum) {
            return MAXINT / 2;
        }
        if (flag) {
/**
 * 数字偏大,
 * 将最大的数设定为得到的数
 * 计算出 最大的数,减去最小的数,然后/2 +最小的数。
 */
            MAXINT = checkNum;
            return MININT + ((checkNum - MININT) / 2);
        } else {
/**
 * 数字偏小
 * 将最小的数设定为得到的数
 * 计算出
 */
            MININT = checkNum;
            return checkNum + ((MAXINT - checkNum) / 2);
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值