-1

我该如何做到这一点,一旦用户输入一个数字并按下回车(或其他东西)它就会运行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);
            }
        }
    }
}
4

3 回答 3

3

您的代码按原样工作。只是您的输入需要用空格分隔。

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

3 9

3[空格] 9),您的扫描仪将拾取 3。您可能想要的是:

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

这样您Scanner就可以在按 Enter 后读取一个数字。无论您采用哪种方式,您都需要在Scannerto handle周围放置一些错误处理InputMismatchException

于 2009-07-12T20:11:30.313 回答
0

我认为您的问题不是很清楚,鉴于您的代码结构,以下更改似乎合乎逻辑:

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

当然只是if(run)(一个好的风格问题)

于 2009-07-12T20:14:13.223 回答
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();
    }   
  }
}
于 2009-07-12T20:40:38.617 回答