Подтвердить что ты не робот

Сканер не видит после пробела

Я пишу программу, которая запрашивает полное имя человека, а затем берет этот вход и меняет его (например, Джон Доу - Доу, Джон). Я начал, пытаясь просто получить ввод, но он получает только первое имя.

Вот мой код:

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

Ответ 1

Измените на String name = scanner.nextLine(); вместо String name = scanner.next();

Подробнее о документации см. здесь next() и nextLine()

Ответ 2

Попробуйте заменить свой код

String name = scanner.nextLine();

вместо

String name = scanner.next();

next() может читать ввод только до space. Он не может прочитать два слова, разделенных символом space. Кроме того, next() помещает курсор в ту же строку после прочтения ввода.

nextLine() считывает ввод, включающий space между словами (то есть, он читается до конца строки \n). После считывания ввода nextLine() позиционирует курсор в следующей строке.

Ответ 3

Из Scanner документации:

A Scanner разбивает свой вход на токены с использованием шаблона разделителя, который по умолчанию соответствует пробелу.

и

public String next()

Находит и возвращает следующий полный токен из этого сканера. Перед ним начинается полный токен, за которым следует вход, соответствующий шаблону разделителя.

Это означает, что по умолчанию шаблон разделителя является "пробелом". Это разделяет ваш текст в пространстве. Используйте nextLine() для получения всей строки.

Ответ 4

scanner.next(); принимает только следующее слово. scanner.nextLine(); должен работать. Надеюсь, что это поможет

Ответ 5

попробуйте использовать

String name = scanner.nextLine();