[解決済み】スキャナはnext()またはnextFoo()を使用した後、nextLine()をスキップしていますか?)
2022-02-22 14:55:42
質問
を使用しています。
Scanner
メソッド
nextInt()
と
nextLine()
は入力の読み込み用です。
こんな感じです。
System.out.println("Enter numerical value");
int option;
option = input.nextInt(); // Read numerical value from input
System.out.println("Enter 1st string");
String string1 = input.nextLine(); // Read 1st string (this is skipped)
System.out.println("Enter 2nd string");
String string2 = input.nextLine(); // Read 2nd string (this appears right after reading numerical value)
問題は、数値を入力した後、最初の
input.nextLine()
はスキップされ、2番目の
input.nextLine()
が実行され、次のような出力になりました。
Enter numerical value
3 // This is my input
Enter 1st string // The program is supposed to stop here and wait for my input, but is skipped
Enter 2nd string // ...and this line is executed and waits for my input
アプリケーションをテストしてみたところ、問題は
input.nextInt()
. これを削除すると
string1 = input.nextLine()
と
string2 = input.nextLine()
が思い通りに実行される。
どのように解決するのですか?
それは
Scanner.nextInt
メソッドは
改行
という文字が入力されます。
Scanner.nextLine
を読み込んだ後に戻ります。
改行
.
を使用した場合にも、同様の動作が発生します。
Scanner.nextLine
の後に
Scanner.next()
または任意の
Scanner.nextFoo
メソッド(ただし
nextLine
そのもの)になります。
回避策
-
を置くか
Scanner.nextLine
の後にScanner.nextInt
またはScanner.nextFoo
を含むその行の残りを消費します。 改行int option = input.nextInt(); input.nextLine(); // Consume newline left-over String str1 = input.nextLine();
-
あるいは、さらに良い方法は、入力を読み通すことです
Scanner.nextLine
で、入力を必要な適切な形式に変換します。例えば、整数に変換するには、次のようにします。Integer.parseInt(String)
メソッドを使用します。int option = 0; try { option = Integer.parseInt(input.nextLine()); } catch (NumberFormatException e) { e.printStackTrace(); } String str1 = input.nextLine();
関連
-
[解決済み】代入の左手は必ず変数 CharAt
-
[解決済み】エラー。Selection does not contain a main type
-
[解決済み】Java、"変数名 "を変数に解決することができない
-
[解決済み】「'void' type not allowed here」エラーの原因とは?
-
[解決済み] メソッドがスーパータイプのメソッドをオーバーライドまたは実装していない - Overrideの場合
-
[解決済み】Mockitoでモックからチェックされた例外を投げる
-
[解決済み] メソッドがそのスーパークラスのメソッドをオーバーライドしない
-
[解決済み】Ubuntu: OpenJDK 8 - パッケージを見つけることができません。
-
[解決済み] エラー - trustAnchors パラメータは空であってはなりません。
-
[解決済み] Mavenを使用して、依存関係を持つ実行可能なJARを作成するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Android java.lang.IllegalStateException: Android java.lang.IllegalStateException: Could not execute method of the activity
-
[解決済み] java のクラス内のコンストラクタは、指定された型に適用できない
-
[解決済み】指定された子にはすでに親がいます。先に子の親に対してremoveView()を呼び出す必要がある(Android)
-
[解決済み] メソッドがスーパータイプのメソッドをオーバーライドまたは実装していない - Overrideの場合
-
[解決済み】Javaで無限大を実装する方法とは?
-
[解決済み】 JAVA 変数宣言はここではできない
-
[解決済み】java 'jar'が内部コマンドまたは外部コマンドとして認識されない。
-
[解決済み】破損したjarファイル
-
[解決済み】Javaで文字列をコピーするにはどうしたらいいですか?
-
[解決済み】Java Scannerがユーザー入力を待たない【重複あり