私は、人のフルネームを求めて、その入力を取得し、それを逆にするプログラムを作成しています(つまり、John Doe-Doe、John)。入力を取得することから始めましたが、最初の名前を取得するだけです。
ここに私のコードがあります:
public static void processName(Scanner scanner) {
System.out.print("Please enter your full name: ");
String name = scanner.next();
System.out.print(name);
}
String name = scanner.nextLine();
の代わりにString name = scanner.next();
に変更します
ドキュメントの詳細はこちら- next() および nextLine()
コードを置き換えてみてください
_String name = scanner.nextLine();
_
代わりに
_String name = scanner.next();
_
next()
は、space
まで入力を読み取ることができます。 space
で区切られた2つの単語を読み取ることはできません。また、next()
は、入力を読み取った後、カーソルを同じ行に置きます。
nextLine()
は、単語間のspace
を含む入力を読み取ります(つまり、_\n
_行の終わりまで読み取ります)。入力が読み取られると、nextLine()
はカーソルを次の行に配置します。
Scanner
ドキュメントから:
Scanner
は、デフォルトで空白に一致する区切り文字パターンを使用して、入力をトークンに分割します。
そして
public String next()
このスキャナーから次の完全なトークンを見つけて返します。完全なトークンの前後に、区切り文字パターンに一致する入力が続きます。
これは、デフォルトで区切りパターンが「空白」であることを意味します。これにより、テキストがスペースで分割されます。 nextLine()
を使用して、行全体を取得します。
scanner.next();
は次のWordのみを取ります。 scanner.nextLine();
は動作するはずです。お役に立てれば
public static void processName(Scanner scanner) {
System.out.print("Please enter your full name: ");
scanner.nextLine();
String name = scanner.nextLine();
System.out.print(name);
}
上記のコードを試してくださいスキャナーはスペースを読み取り、文字列の次の参照に移動できるはずです
これを使ってみてください
String name = scanner.nextLine();