Dans mon programme actuel, une méthode demande à l'utilisateur d'entrer la description d'un produit comme entrée String
. Cependant, lorsque j'essaie ultérieurement d'imprimer ces informations, seul le premier mot de String
s'affiche. Quelle pourrait en être la cause? Ma méthode est la suivante:
void setDescription(Product aProduct) {
Scanner input = new Scanner(System.in);
System.out.print("Describe the product: ");
String productDescription = input.next();
aProduct.description = productDescription;
}
Donc, si l'entrée utilisateur est "Soda pétillant à saveur d'orange", le System.out.print
ne produira que "Sparkling".
Toute aide sera fortement appréciée!
Remplacez next()
par nextLine()
:
String productDescription = input.nextLine();
Utilisez input.nextLine();
au lieu de input.next();
javadocs for Scanner répondez à votre question
Un scanner divise son entrée en jetons à l'aide d'un modèle de délimiteur, qui correspond par défaut aux espaces blancs.
Vous pouvez modifier le motif d'espaces par défaut utilisé par le scanner en faisant quelque chose comme
Scanner s = new Scanner();
s.useDelimiter("\n");
input.next () prend le premier mot délimité par des espaces de la chaîne d'entrée. Donc, par sa conception, il fait ce que vous avez décrit. Essayez input.nextLine()
.
Javadoc à la rescousse:
Un scanner divise son entrée en jetons à l'aide d'un modèle de délimiteur, qui correspond par défaut aux espaces blancs
nextLine
est probablement la méthode à utiliser.