2017-02-28 7 views
0

自分のプログラムを書くときに面白い状況に遭遇しました。
stringName.next()はユーザーの入力を受け入れますが、stringName.nextLine()は受け入れません。違いは何ですか? (Java)

私は、ループを続行することを決定するためにユーザーからの一言を受け入れる必要があります。 .nextLine()を使用すると、ユーザーは入力を許可されず、プログラムは中止されましたが、.next()は完璧に正常に実行されました。

.next()は、文字列の最初のスペースまで入力が受け入れられ、.nextLine()は文字列全体を受け入れたと考えました。

なぜ両方ともユーザーの入力を受け入れることになっているのですか..これ以上のことはありますか?

.next() works perfectly fine for my program, but I'm curious for the future in case it happens again. 

ありがとう。

+0

'nextLine'または' next'を実行する前の 'Scanner'の最後の操作は何でしたか?おそらく 'nextInt'のような、改行文字を取り除かなかったものでしょう。 –

+2

あなたの質問を編集するには、あなたが書いたコードの短いバージョン([mcve]が最高です)とユーザーが入力した入力を加えて、あなたの質問に答えることができます。 – RealSkeptic

+0

1)私はあなたが「スキャナー」について話していると仮定します。 2)a)段落とb)インラインコード(バッククォート)を使用して、あなたの壁をフォーマットします。 3)実際のコードを[MCVE](https://stackoverflow.com/help/mcve)に投稿して、問題を実証してください。 –

答えて

1

私はいつもnextLine()を使用して入力を読み取り、その文字列を解析することをお勧めします。

next()を使用すると、スペースの前に来るものだけが返されます。 nextLine()は、現在の行を返した後に自動的にスキャナを下に移動します。

nextLine()のデータを解析するのに便利なツールは、str.split("\\s+")です。

String data = scanner.nextLine(); 
String[] pieces = data.split("\\s+"); 
// Parse the pieces 

ScannerクラスまたはStringクラスの詳細については、次のリンクを参照してください。前http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

+0

あなたの問題が解決したら、この回答に「Accepted」と記入してください。 –

関連する問題