gpt4 book ai didi

java - 卡在 java 赋值,二进制搜索算法上

转载 作者:行者123 更新时间:2023-11-30 11:28:56 25 4
gpt4 key购买 nike

我在作业中遇到了这个问题,希望得到一些指导。基本上,该程序应该让用户想到 1-100 之间的一个数字,然后询问它是高于还是低于 50。然后程序输出范围的中点,直到答案正确为止。例如,如果输入“h”,它会询问数字是否为 75,如果响应为“l”,它会询问数字是否为 67,等等。

我想我已经构建了框架,但我真的在为如何接近下一步找到中点而苦苦挣扎。任何指导将不胜感激。

import java.util.Scanner;

public class numberguess
{

public static void main(String[] args)
{
String shouldPlayAgain = "y";
String response = "h";

Scanner keyboard = new Scanner(System.in);

do
{
System.out.println("Guess a number between 1 and 100.");
System.out.print("Is it 50? (h/l/c): ");
response = keyboard.nextLine();

if (response.equals("h"))
{
System.out.println("Is it 75? (h/l/c): ");
}

if (response.equals("l"))
{
System.out.println("Is it 25? (h/l/c): ");
}

System.out.print("Great! Do you want to play again? (y/n): ");
shouldPlayAgain = keyboard.nextLine();
}
while (shouldPlayAgain.equals("y"));
}
}

最佳答案

我不会写出解决方案,但我会尽力为您指明正确的方向。希望这会让您走上正确的轨道,自己实现解决方案。如果有任何不清楚的地方,请随时提出具体问题。

您需要创建两个变量来跟踪您的下限和上限以进行猜测。

int lowerBound = 0;
int upperBound = 100;

然后你反复猜测中间的,也就是:

(upperBound + lowerBound) / 2;

假设您猜 50。然后用户输入 H。这意味着该数字大于 50,但小于 100。所以现在您知道新的下限是 50,设置:

lowerBound = 50;

然后重复这个过程,这次 (upperBound + lowerBound)/2; 给你 75,等等。您知道您已经完成了对 lowerBound 是否等于 upperBound 的猜测。剩下的就是在一个循环中构建这个过程,你就完成了。

关于java - 卡在 java 赋值,二进制搜索算法上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18711100/

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