繁体   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