gpt4 book ai didi

java - 猜数字游戏中的上下边界 - Java

转载 作者:行者123 更新时间:2023-12-01 14:01:24 25 4
gpt4 key购买 nike

所以我尝试用 Java 创建一个猜数字游戏。用户想到 1 - 100 之间的数字,然后计算机尝试使用二分搜索方法猜测该数字。因此,计算机的第一个猜测是 50,如果用户选择高于它的值,则为 75,如果低于该值,则它会猜测 37。

因此,每次用户输入他/她的选择时,我都尝试设置新的上限和下限。如果计算机猜测 75 并且用户说太高,那么新的上限现在应该是 74,如果 37 太低则 38 成为新的下限。我试图在名为 NumberGuesser(int lowerBound, int upperBound) 的构造函数中执行此操作。看来我已经达到了下限,但我需要帮助来达到上限。也许,你们可以再检查一下我的下限,看看是否正常工作。我似乎也无法让计算机猜测超过 50。如果我选​​择更高,它不会超过 50。

现在我们正在我的 Java 类中学习类,我已经在类中编写了大部分决策算法,并且我的程序中的对象引用了我名为 NumberGuesser 的类。

这是我的代码:

public class NumberGuesser 
{
private int userGuess = 50;
private int max = 100;
private int min = 1;


NumberGuesser(int lowerBound, int upperBound)
{
max = userGuess;

/*if(userGuess > max)
{
max = userGuess;
}
else if(min < userGuess)
{
min = userGuess;
}*/

if(userGuess < max)
{
max = userGuess;
}
else if(userGuess > max)
{
min = userGuess;
}
}

void lower()
{
userGuess = userGuess / 2;
}

void higher()
{

userGuess = ((max - userGuess) / 2) + userGuess;
}

public int getCurrentGuess()
{
return userGuess;
}

void reset()
{

}
}

主要驱动类

import java.util.*;

public class Assignment7
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
char guess;
int min = 1;
int max = 100;
NumberGuesser numGuess = new NumberGuesser(min, max);

System.out.println("Please think of a number between 1 and 100");

do
{
System.out.print("Is the number "+numGuess.getCurrentGuess()+"(h/l/c): ");
guess = input.next().charAt(0);

if(guess == 'h')
{
numGuess.higher();
}
else if(guess == 'l')
{
numGuess.lower();
}
else if(guess == 'c')
{
System.out.println("Correct!");
}
}while(guess != 'c');
}
}

任何帮助,我们将不胜感激!干杯!

最佳答案

你的代码没有任何意义。如果您要将参数传递给构造函数,通常您会使用这些数字来设置类字段,但我发现您没有执行任何此类操作。

但是话虽如此,我不太确定是否会使用构造函数参数来执行此操作。我的建议是

  • 首先,也是最重要的,为您的类(class)提供上限和下限 int 字段。
  • 根据用户的响应更改这些字段所保存的值。也许给它一个 setUpperBound(int upperBound) 和一个 setLowerBound(int lowerBound) 方法。
  • 使用这些值让您的类(class)进行下一次猜测。
<小时/>

根据您的驱动程序代码,您的代码调用构造函数一次,这很好,并且您需要为您的类提供 upperBound 和 lowerBound int 字段,正如我已经建议的那样,然后使用构造函数设置您的 lowerBound 和 upperBound ,您尚未执行此操作,然后在 lower()higher() 方法调用中更改这些字段的值。您现在就想尝试这样做。

<小时/>

在你的higher和lower方法中,你必须首先设置上限和下限,你可以使用min和max,进行新的猜测。然后在进行猜测时使用最小值和最大值。你没有这样做。

关于java - 猜数字游戏中的上下边界 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19329844/

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