所以我正在尝试用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');
}
}
任何帮助将不胜感激!干杯!