Ответ 1
Замените next()
с nextLine()
:
String productDescription = input.nextLine();
В моей текущей программе один из способов попросит пользователя ввести описание продукта как вход 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
даст только "Искрящийся".
Любая помощь будет принята с благодарностью!
Замените next()
с nextLine()
:
String productDescription = input.nextLine();
Используйте input.nextLine();
вместо input.next();
javadocs для сканера ответьте на вопрос
Сканер разбивает свой вход на токены, используя шаблон разделителя, который по умолчанию соответствует пробелу.
Вы можете изменить шаблон пробелов по умолчанию, используемый сканером, сделав что-то вроде
Scanner s = new Scanner();
s.useDelimiter("\n");
input.next() принимает в первом слове с разделителем whitsepace входной строки. Поэтому по дизайну он делает то, что вы описали. Попробуйте input.nextLine()
.
Javadoc на помощь:
Сканер разбивает свой вход на токены, используя шаблон разделителя, который по умолчанию соответствует пробелу
nextLine
, вероятно, метод, который вы должны использовать.