背景介绍:
火影忍者手游有一个游戏是山中井野的心转身训练,游戏本质上还是一个猜数字的游戏。给定一个数,由用户猜,然后给出提示过大还是过小。可以采用取中方式,逐渐逼近目标数。有搜索一下类似的,但是都是先生成一个数,然后由用户自己猜,最后用户再猜这个数。但是我们这里反转对象,代码猜,用户来告诉代码是大是小。
需求分析:
用户应该首先输入一个范围,我们默认由0到输入的数区间内查找。
代码如下
尽量采用java原生api
public class CheckNumGame {
private static int MAXINT = 0;
private static int MININT = 0;
public static void main(String[] args) {
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("输入错误,请重新输入");
}
}
}
private static int checkNum(int checkNum, Boolean flag) {
if (0 == checkNum) {
return MAXINT / 2;
}
if (flag) {
MAXINT = checkNum;
return MININT + ((checkNum - MININT) / 2);
} else {
MININT = checkNum;
return checkNum + ((MAXINT - checkNum) / 2);
}
}
}