web-dev-qa-db-ja.com

スペースの後にスキャナーが表示されない

私は、人のフルネームを求めて、その入力を取得し、それを逆にするプログラムを作成しています(つまり、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);
}
31
igeer12

String name = scanner.nextLine();の代わりにString name = scanner.next();に変更します

ドキュメントの詳細はこちら- next() および nextLine()

49
Prabhakaran

コードを置き換えてみてください

_String name = scanner.nextLine();
_

代わりに

_String name = scanner.next();
_

next()は、spaceまで入力を読み取ることができます。 spaceで区切られた2つの単語を読み取ることはできません。また、next()は、入力を読み取った後、カーソルを同じ行に置きます。

nextLine()は、単語間のspaceを含む入力を読み取ります(つまり、_\n_行の終わりまで読み取ります)。入力が読み取られると、nextLine()はカーソルを次の行に配置します。

15
Woody

Scannerドキュメントから:

Scannerは、デフォルトで空白に一致する区切り文字パターンを使用して、入力をトークンに分割します。

そして

public String next()

このスキャナーから次の完全なトークンを見つけて返します。完全なトークンの前後に、区切り文字パターンに一致する入力が続きます。

これは、デフォルトで区切りパターンが「空白」であることを意味します。これにより、テキストがスペースで分割されます。 nextLine()を使用して、行全体を取得します。

3
PurkkaKoodari

scanner.next();は次のWordのみを取ります。 scanner.nextLine();は動作するはずです。お役に立てれば

2
Wold
 public static void processName(Scanner scanner) {
        System.out.print("Please enter your full name: ");
        scanner.nextLine();
        String name = scanner.nextLine();
        System.out.print(name);
    }

上記のコードを試してくださいスキャナーはスペースを読み取り、文字列の次の参照に移動できるはずです

1
Pankaj Sonani

これを使ってみてください

String name = scanner.nextLine();
1
Ankur