gpt4 book ai didi

java - 猜数字游戏不断重复?

转载 作者:太空宇宙 更新时间:2023-11-04 06:20:37 25 4
gpt4 key购买 nike

所以我制作了这个游戏,我选择一个随机数 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;

}

}

最佳答案

您需要跟踪最小值和最大值。因此,在您的代码中,当您说 max = 100min = 0 时,程序会忘记最大值和最小值是多少。

删除这些行就可以了。本质上,您需要一直记住最小值和最大值,直到找到答案。

例如如果数字是 42,最小值和最大值将如下所示:

0..100, guess 50 (too high)
0..49, guess 25 (too low)
26..49, guess 38 (too low)
39..49, guess 44 (too high)
39..43, guess 41 (too low)
42..43, guess 42 WIN!

注意最小和最大如何放大答案。插入这些信息是战略发挥作用的关键。

关于java - 猜数字游戏不断重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27454639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com