0

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');
}
}

どんな助けでも大歓迎です!乾杯!

4

1 に答える 1