-1

if elseユーザーが数値を入力してEnterキー(または何か)を押すと、ステートメントが実行されるようにするにはどうすればよいですか?

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

コードはそのまま機能します。入力をスペースで区切る必要があるだけです。

1つの数字を入力してEnterキーを押すと、スペースがなくなり、スペースScannerで区切られるように設定されているため、何も見つかりません。一方、次のように入力した場合:

3 9

3[スペース] 9)、スキャナーは3を取得します。おそらく必要なのはこれです:

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

ScannerEnterキーを押した後、数字が読み取れるようにします。これをどのように行うかに関係なく、 sScannerを処理するためにエラー処理を配置する必要があります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 に答える