In my current program one method asks the user to enter the description of a product as a String
input. However, when I later attempt to print out this information, only the first word of the String
shows. What could be the cause of this? My method is as follows:
void setDescription(Product aProduct) {
Scanner input = new Scanner(System.in);
System.out.print("Describe the product: ");
String productDescription = input.next();
aProduct.description = productDescription;
}
So if the user input is "Sparkling soda with orange flavor", the System.out.print
will only yield "Sparkling".
Any help will be greatly appreciated!
This question is related to
java
string
java.util.scanner
input.next() takes in the first whitsepace-delimited word of the input string. So by design it does what you've described. Try input.nextLine()
.
The javadocs for Scanner answer your question
A Scanner breaks its input into tokens using a delimiter pattern, which by default matches whitespace.
You might change the default whitespace pattern the Scanner is using by doing something like
Scanner s = new Scanner();
s.useDelimiter("\n");
Javadoc to the rescue :
A Scanner breaks its input into tokens using a delimiter pattern, which by default matches whitespace
nextLine
is probably the method you should use.
Use input.nextLine();
instead of input.next();
Source: Stackoverflow.com