私の現在のプログラムでは、1つの方法でユーザーにString
入力として製品の説明を入力するように求めています。ただし、後でこの情報を印刷しようとすると、String
の最初のWordのみが表示されます。この原因は何でしょうか?私の方法は次のとおりです。
void setDescription(Product aProduct) {
Scanner input = new Scanner(System.in);
System.out.print("Describe the product: ");
String productDescription = input.next();
aProduct.description = productDescription;
}
ユーザー入力が「オレンジ風味の炭酸ソーダ」の場合、System.out.print
は「Sparkling」のみを生成します。
どんな助けも大歓迎です!
next()
を nextLine()
に置き換えます:
String productDescription = input.nextLine();
input.nextLine();
の代わりにinput.next();
を使用します
スキャナーのjavadocs 質問に答える
Scannerは、デフォルトで空白に一致する区切り文字パターンを使用して、入力をトークンに分割します。
スキャナーが使用しているデフォルトの空白パターンを変更するには、次のようにします。
Scanner s = new Scanner();
s.useDelimiter("\n");
input.next()は、入力文字列の最初の空白で区切られたWordを受け取ります。そのため、設計上は説明したとおりに動作します。 input.nextLine()
を試してください。