web-dev-qa-db-fra.com

Le scanner ne voit pas après l'espace

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);
}
31
igeer12

Passez à String name = scanner.nextLine(); au lieu de String name = scanner.next();

Voir plus de documentation ici - next () et nextLine ()

49
Prabhakaran

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.

15
Woody

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.

3
PurkkaKoodari

scanner.next(); ne prend que le mot suivant. scanner.nextLine(); devrait fonctionner. J'espère que cela t'aides

2
Wold
 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

1
Pankaj Sonani

essayez d'utiliser ceci

String name = scanner.nextLine();
1
Ankur