Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 没有循环或“while”代码的高或低游戏_Java - Fatal编程技术网

Java 没有循环或“while”代码的高或低游戏

Java 没有循环或“while”代码的高或低游戏,java,Java,我是一名正在使用java的学生,我很难编写一个高低猜度的游戏。我不能使用循环或while代码。有什么想法吗?这就是我现在所拥有的: public class FinalProject1 { public static void main(String [] args) { System.out.println("Number Guessing Game 1-1000\nGuess a number"); guess(); } publ

我是一名正在使用java的学生,我很难编写一个高低猜度的游戏。我不能使用循环或while代码。有什么想法吗?这就是我现在所拥有的:

public class FinalProject1

{

  public static void main(String [] args)

    {

       System.out.println("Number Guessing Game 1-1000\nGuess a number");
       guess();
    }

  public static int random()

    {
        int x = (int)(1000*Math.random() + 1);
        return x;
    }

  public static void guess()

  {

      int num = random();
      int tries = 0;
      Scanner keyboard = new Scanner(System.in);
      String inputString = keyboard.nextLine();
      int input = Integer.parseInt(inputString);

      if (input > num)

      {
          System.out.println("Guess a higher number");
          inputString = keyboard.nextLine();
      }

      else if (input < num)

      {
          System.out.println("Guess a lower number");
          inputString = keyboard.nextLine();
      }

      else if (num == input)

      {
          System.out.println("You Win");

  }

}

} 

首先,你的逻辑有缺陷。如果输入>数值,则用户猜测的数值太高,需要猜测一个较低的数值

其他人建议使用递归,这是您的问题的常见解决方案,并且可能是您需要做的,因为您可能刚刚了解了递归

但是,由于我喜欢相反,我会通过启动一个新线程来实现,如下所示:

public class FinalProject1 implements Runnable {
    private Scanner keyboard = new Scanner(System.in);
    private int num = random();

    public static void main(String[] args) {
        System.out.println("Number Guessing Game 1-1000\nGuess a number");
        new Thread(new FinalProject1()).start();
    }

    public static int random() {
        return (int) (1000 * Math.random() + 1);
    }

    @Override
    public void run() {
        String inputString = this.keyboard.nextLine();
        int input = Integer.parseInt(inputString);

        if (input > this.num) {
            System.out.println("Guess a lower number");
            new Thread(this).start();
        } else if (input < this.num) {
            System.out.println("Guess a higher number");
            new Thread(this).start();
        } else if (this.num == input) {
            System.out.println("You Win");
        }
    }
}
有几件事

您的>&<上下检查是向后的 您需要使用递归,以便在没有任何循环的情况下产生预期的行为

public static void main(String [] args)
{

    System.out.println("Number Guessing Game 1-1000\nGuess a number");
    int num = random();
    Scanner keyboard = new Scanner(System.in);

    guess(keyboard, num);
}

public static int random()
{
    int x = (int)(1000*Math.random() + 1);
    return x;
}

public static void guess(Scanner keyboard, int goal)
{
    String inputString = keyboard.nextLine();
    int input = Integer.parseInt(inputString);

    if (input < goal)
    {
        System.out.println("Guess a higher number");
        guess(keyboard, goal);
    }

    else if (input > goal)
    {
        System.out.println("Guess a lower number");
        guess(keyboard, goal);
    }

    else if (input == goal)
    {
        System.out.println("You Win");
    }
}
基本上,我们得到的是他们的反应,检查结果是>还是<,告诉他们,然后立即再次调用guess方法,以重复这个过程,直到他们得到正确的结果


一开始,围绕递归进行思考可能相当困难,如果你不理解递归,请继续练习。

从一开始就读这句话。@ElliottFrisch,然后单击了解更多:完成了你建议的所有更改,并更改了周围的一些内容。非常感谢您的帮助。没问题!:你可以自由选择+1