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');
}
}
どんな助けでも大歓迎です!乾杯!