J'écris un programme qui demande le nom complet de la personne, puis prend cette entrée et l'inverse (c'est-à-dire John Doe - Doe, John). J'ai commencé par essayer d'obtenir juste l'entrée, mais elle n'obtient que le prénom.
Voici mon code:
public static void processName(Scanner scanner) {
System.out.print("Please enter your full name: ");
String name = scanner.next();
System.out.print(name);
}
Passez à String name = scanner.nextLine();
au lieu de String name = scanner.next();
Voir plus de documentation ici - next () et nextLine ()
Essayez de remplacer votre code
String name = scanner.nextLine();
au lieu
String name = scanner.next();
next()
ne peut lire l'entrée que jusqu'à space
. Il ne peut pas lire deux mots séparés par space
. De plus, next()
place le curseur sur la même ligne après avoir lu l'entrée.
nextLine()
lit l'entrée incluant space
entre les mots (c'est-à-dire qu'il lit jusqu'à la fin de la ligne \n
). Une fois l'entrée lue, nextLine()
positionne le curseur sur la ligne suivante.
De la documentation Scanner
:
Un
Scanner
divise son entrée en jetons à l'aide d'un modèle de délimiteur, qui correspond par défaut aux espaces.
et
public String next()
Recherche et renvoie le prochain jeton complet de ce scanner. Un jeton complet est précédé et suivi d'une entrée qui correspond au modèle de délimiteur.
Cela signifie par défaut que le modèle de délimiteur est "espace blanc". Cela divise votre texte dans l'espace. Utilisez nextLine()
pour obtenir la ligne entière.
scanner.next();
ne prend que le mot suivant. scanner.nextLine();
devrait fonctionner. J'espère que cela t'aides
public static void processName(Scanner scanner) {
System.out.print("Please enter your full name: ");
scanner.nextLine();
String name = scanner.nextLine();
System.out.print(name);
}
Essayez le code ci-dessus Le scanner devrait être capable de lire l'espace et de passer à la référence suivante de la chaîne
essayez d'utiliser ceci
String name = scanner.nextLine();