1
Scanner scanner = new Scanner(system.in);
String input = new String();

while(!input.equalsIgnoreCase("stop")) {
input = scanner.nextLine();
}

なぜこれが機能しないのですか?ループは永遠に続きます。私はこの方法を何百万回も使用してきましたが、今ではうまくいきません。

編集**

さて、私はJGraspを使用しています(これは私の教授が私たちに使用したいと望んでいるためです).netbeansでこれを試したところ、うまくいきました...

EDIT2**

まず第一に、これが問題かどうかはわかりませんが、私のコードでは、メインの Scanner Scanner = new Scanner(file); の冒頭に向かって次のようなものがありました。そして後で、この scanner = new Scanner(System.in); のようなものになります。ここから前のコード スニペットが始まります。そのため、まず最初に、文字列チェックを伴う while ループが必要な領域の新しいメソッドを main に呼び出すことで、これを変更しました。また、ループを再フォーマットしました。

Scanner scanner = new Scanner(System.in);
    String input = new String();

    while(!input.contains("stop")) {
        System.out.print("Enter an option: ");
        input = scanner.nextLine();
    }

そして今、それはうまくいきます。

EDIT3**

そこで、新しいメソッド内で元の形式を試してみましたが、それも完全に機能します。ファイルのスキャナーを持っていて、その参照を System.in で新しいスキャナーオブジェクトに再利用した方法と関係があると今では信じています。私はそれについて100%ではありませんが、whileループを独自のメソッドに移動し、それをメインに保持しないことでうまくいったので、それと関係があるように感じます.

4

2 に答える 2

1

おそらく、スキャナーに解析するものが残っていることを確認する必要がありますか?

while(scanner.hasNextLine() && !input.equalsIgnoreCase("stop")) {
    input = scanner.nextLine();
}
于 2012-10-08T05:56:45.380 に答える
0

コードは正常に動作しています:コンパイルエラーを除いて、つまりSystem.in代わりに使用してくださいsystem.in

Scanner scanner = new Scanner(System.in);
String input = new String();

while(!input.equalsIgnoreCase("stop")) {
    input = scanner.nextLine();
}
于 2012-10-08T06:16:54.050 に答える