を実行したときに、私が使用していますつくれません。nextLine()は、私は自分のコード
public static final Scanner CONSOLE = new Scanner(System.in);
をして、私のメインメソッドで:
System.out.print("\nPlease choose a color for the circle between the following options:\nBlack\nRandom");
String colorChoice = CONSOLE.nextLine();
colorChoice = colorChoice.trim();
プログラムは「色を選んでください」と表示されますが任意のユーザー入力を許可する前に終了します。なぜそれが働かないのか理解できない。
これが出力されます。
50と400の間の円のための半径を入力してください: ブラック ランダム:[DrJava入力ボックス]
次のオプションの間の円の色をお選びください>
EDIT 1:
私は\n
が問題だったかどうかを確認するためにSystem.out.print("\nPlease choose a color for the circle between the following options: Black, Random");
にラインSystem.out.print("\nPlease choose a color for the circle between the following options:\nBlack\nRandom");
を変更しました。それでも動作しません。
Iは、後にwhileループが含まれ(値を確認する)ので、コードの読み取り:
System.out.print("\nPlease choose a color for the circle between the following options: Black, Random");
String colorChoice = CONSOLE.nextLine();
colorChoice = colorChoice.trim();
boolean matchesChoice = matchesChoice(colorChoice, "black", "random");
while(matchesChoice != true){
System.out.print("\nInvalid color choice. Please try again.");
colorChoice = CONSOLE.nextLine();
colorChoice = colorChoice.trim();
matchesChoice = matchesChoice(colorChoice, "black", "random");
}
このための出力を読み取り:
50と400との間の円のための半径を入力してください[DrJava入力ボックス]
円の色を以下の中から選択してください:黒、ランダム 無効な色です。もう一度お試しください。 [DrJava入力ボックス]
したがってCONSOLE.nextLine()はループの内部では動作しますが、外部では動作しません。ユーザーが入力したもの(正解かどうか)に関係なく、「無効な色の選択」行と入力が繰り返されます。
私はそれがバッファ遅延によって引き起こされたと考えています。nextLineは、改行文字 '\ n'が見つかるまで読み続けると停止し、印刷しているステートメントはその中に2つの改行文字を表示します。出力バッファがすべての 'print'文を出力する前に' CONSOLE.nextLine() 'が実行されたと推測していますので、print文が続行されると' nextLine() 'が何かを読み込みます。それが当てはまるのは変だ。次のように印刷してみてください: '' ...オプション:ブラック、ランダム: " – Everyone
"は、ユーザー入力を許可する前に終了します。 "IDEで終了する前に何か入力することができます。 –
問題に関連するホールコードを提供する必要があります。エラー/例外???? –