0
这仅仅是一个介绍Comp Sci类的小作业,但我遇到了一些麻烦,我必须提示用户进行验证猜测代码的结果,然后如果它是错误的,它会提示它是否更高或更低等等。我想这样做,所以如果最大范围的数字是12,我会从6开始,然后从那里我会首先问用户:如果它是正确的?如果不是,则询问是否更高或更低。根据他的回答,我的下一个值将介于0和6之间,即3或6和12,即9。我尝试了多种不同的方式,并在网上搜索了一些提示,但没有运气。如果你能用我的代码来帮助我,或者可以指导我一个很好的答案!在Java猜测游戏中遇到了一些麻烦
Scanner in = new Scanner(System.in);
boolean guess = false;
int maxMonth = 12;
int minMonth = 0;
int month = (maxMonth - minMonth)/2;
int total = 6;
while (guess == false) {
String yes = "yes";
String no = "no";
int tries = 0;
boolean firstGuess = false;
System.out.println("Is your birthday in " + month + " yes or no:");
String a1 = in.next();
if (a1.equals(yes)) {
firstGuess = true;
} else {
System.out.println("Is your birthday after this month?");
String a2 = in.next();
if (a2.equals(yes)) {
total++;
total = (int) total/2;
month = month + total;
} else {
total = total - 3;
total = (int) total/2;
month = month + total;
}
}
//guesses the day in the month
while (firstGuess == true) { }
}
你被允许使用树木吗?你可以做一个二叉搜索树,根据它的高低来左右移动 – FattySalami
二进制搜索不需要树 - 只是说。请参阅https://en.wikipedia.org/wiki/Binary_search_algorithm –
在代码中执行该操作,就像在头脑中或解释中所做的那样:您有一个下限和一个更高的界限(最初为1和12)。你猜这个范围的中间数。如果它是正确的,你退出。如果它较低,则将界限更改为[guess + 1,higherBound](即[7,12]),如果更高,则将界限更改为[lowerBound,guess - 1](即[1,5] )并且你继续 –