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

Сканер только считывает первое слово вместо строки

В моей текущей программе один из способов попросит пользователя ввести описание продукта как вход String. Однако, когда я позже попытаюсь распечатать эту информацию, отобразится только первое слово String. Что может быть причиной этого? Мой метод выглядит следующим образом:

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 даст только "Искрящийся".

Любая помощь будет принята с благодарностью!

4b9b3361

Ответ 1

Замените next() с nextLine():

String productDescription = input.nextLine();

Ответ 2

Используйте input.nextLine(); вместо input.next();

Ответ 3

javadocs для сканера ответьте на вопрос

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

Вы можете изменить шаблон пробелов по умолчанию, используемый сканером, сделав что-то вроде

Scanner s = new Scanner();
s.useDelimiter("\n");

Ответ 4

input.next() принимает в первом слове с разделителем whitsepace входной строки. Поэтому по дизайну он делает то, что вы описали. Попробуйте input.nextLine().

Ответ 5

Javadoc на помощь:

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

nextLine, вероятно, метод, который вы должны использовать.