数字猜谜游戏 - 如何解决?

时间:2009-07-12 19:48:10

标签: java if-statement random

如何在用户输入数字并按下输入(或其他内容)后运行if else语句?

public static void main(String[] args) {

    System.out.println("please guess the number between 1 and 100.");

    boolean run = true;
    int y = 0;

    Random ran = new Random();
    int x = ran.nextInt(99);

    while (run == true) {

        Scanner scan = new Scanner(System.in).useDelimiter(" ");
        // System.out.println(scan.nextInt());

        y = scan.nextInt();

        /*
         * if(y > 0){ run = false; } else{ run = true; }
         */
        if (y > x) {
            System.out.println("Lower...");
        } else if (y < x) {
            System.out.println("Higher...");
        } else if (y == x) {
            System.out.println("Correct!");
            try {
                Thread.currentThread().sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();

                System.exit(0);
            }
        }
    }
}

3 个答案:

答案 0 :(得分:3)

您的代码按原样运行。只是你的输入需要用空格分隔。

如果您输入一个数字并按Enter键,则没有空格,并且由于您已将Scanner设置为以空格分隔,因此它找不到任何内容。另一方面,如果您输入:

3 9

3 [空格] 9),您的扫描仪会选择3.您可能需要的是:

Scanner scan = new Scanner(System.in).useDelimiter("\n");

这样您的Scanner会在您按Enter后读取一个数字。无论您以何种方式执行此操作,都需要在Scanner周围进行一些错误处理以处理InputMismatchException

答案 1 :(得分:0)

我认为你的问题不是很清楚,考虑到代码的结构,以下更改似乎是合乎逻辑的:

           else if (y == x) {
                   System.out.println("Correct!");
                   run = false;
           }

当然只是if(run)(一种好的风格)

答案 2 :(得分:0)

您的代码实际上并未生成1到100之间的数字(相反,介于0到98之间)。修复此错误并添加一些错误检查,您的代码变为:

import java.util.*;

public class HiLo {
  public static void main(String[] args) {
    int guess = 0, number = new Random().nextInt(100) + 1;
    Scanner scan = new Scanner(System.in);

    System.out.println("Please guess the number between 1 and 100.");

    while (guess != number) {
      try {
        if ((guess = Integer.parseInt(scan.nextLine())) != number) {
          System.out.println(guess < number ? "Higher..." : "Lower...");
        }
        else {
          System.out.println("Correct!");
        }
      }   
      catch (NumberFormatException e) {
        System.out.println("Please enter a valid number!");
      }   
      catch (NoSuchElementException e) {
        break; // EOF
      }   
    }   

    try {
      Thread.currentThread().sleep(1000);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }   
  }
}