簡體   English   中英

數字猜謎游戲中的上下邊界-Java

[英]Upper and Lower Boundaries in a Number Guessing Game - Java

所以我試圖用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');
}
}

任何幫助將不勝感激的家伙! 干杯!

您的代碼沒有任何意義。 如果要將參數傳遞給構造函數,通常會使用這些數字來設置類字段,而我發現您什么也不做。

但話雖如此,但我不確定是否要使用構造函數參數來完成此操作。 我建議的是

  • 首先,給您的類上限值和下限值int字段。
  • 根據用戶的響應更改這些字段保留的值。 也許給它一個setUpperBound(int upperBound)setLowerBound(int lowerBound)方法。
  • 使用這些值讓您的班級進行下一個猜測。

根據您的驅動程序代碼,您的代碼一次調用了構造函數,這很好,您將需要為類提供upperBound和lowerBound int字段(如我已經建議的那樣),然后使用構造函數設置您的lowerBound和upperBound,您可以尚未完成, 然后在lower()higher()方法調用中更改這些字段的值 您現在將要嘗試執行此操作。


在較高和較低的方法中,必須先設置上限和下限, 然后才能使用min和max, 然后再進行新的猜測。 然后在進行猜測時使用最小值和最大值。 你不是這么做的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM