所以我做了这个游戏,我选择了一个随机数字1-100,并且计算机猜测,我告诉它太高,太低或者其他。它工作得很好,除了当我尝试二进制搜索时陷入循环,而我似乎无法阻止它。我将演示:数字猜测游戏不断重复?
说这个数字是79.最终,程序会询问数字是否为42.不,那太低了。然后它会问是否71.猜测更高!然后它问82.不,降低。然后它回到42,循环重复一遍又一遍。这里是我的代码(注意,这是从完整代码的摘录,所以借口缺乏的JOptionPane和诸如此类的进口):
int x = 50;
int y = x;
int[] alreadyGuessed = {};
boolean secondGuess = false;
//The user has to select, too high, too low, correct!
while (secondGuess == false) {
Object[] options = {"Too high", "Too Low", "Correct"};
int pick = JOptionPane.showOptionDialog(null, "Is your number " + x
+ "?", "Guess",
JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE,
null, options, options[2]);
for (int positionInList = 0; positionInList >= 100; positionInList++) {
arrayDemo(x, positionInList);
}
if (pick == 0) {
int max = x - 1;
int min = 0;
x = ((max + min)/2);
}
if (pick == 1) {
int max = 100;
int min = x+1;
x = ((max + min)/2);
}
if (pick == 2) {
System.out.println("Yay! I win!");
secondGuess = true;
}
}
为什么当人选择“过高”时,将'min'设置为零?当人选择“太低”时,为什么要将'max'设置为100?你在哪里跟踪'min'和'max'猜测? – 2014-12-13 01:41:06
哎呦,把它弄倒了 – Tim 2014-12-13 01:45:50
如果猜测太低,你应该做的就是把分钟提高到比猜测更多,对吗?如果猜测太高,你应该做的就是将最大值降低到小于猜测值,对吗?为什么在每种情况下都改变最小值和最大值? – 2014-12-13 01:47:52