J'ai reçu le code suivant:
int nnames;
String names[];
System.out.print("How many names are you going to save: ");
Scanner in = new Scanner(System.in);
nnames = in.nextInt();
names = new String[nnames];
for (int i = 0; i < names.length; i++){
System.out.print("Type a name: ");
names[i] = in.nextLine();
}
Et la sortie de ce code est la suivante:
How many names are you going to save:3
Type a name: Type a name: John Doe
Type a name: John Lennon
Remarquez comment il a sauté l'entrée du prénom ?? Il l'a sauté et est allé directement à l'entrée du deuxième nom. J'ai essayé de chercher ce qui cause cela, mais je ne semble pas être en mesure de le résoudre. J'espère que quelqu'un pourra m'aider. Merci
La raison de l'erreur est que le nextInt extrait uniquement l'entier, pas la nouvelle ligne. Si vous ajoutez un in.nextLine () avant votre boucle for, il mangera la nouvelle ligne vide et vous permettra d'entrer 3 noms.
int nnames;
String names[];
System.out.print("How many names are you going to save: ");
Scanner in = new Scanner(System.in);
nnames = in.nextInt();
names = new String[nnames];
in.nextLine();
for (int i = 0; i < names.length; i++){
System.out.print("Type a name: ");
names[i] = in.nextLine();
}
ou lisez simplement la ligne et analysez la valeur sous forme de nombre entier.
int nnames;
String names[];
System.out.print("How many names are you going to save: ");
Scanner in = new Scanner(System.in);
nnames = Integer.parseInt(in.nextLine().trim());
names = new String[nnames];
for (int i = 0; i < names.length; i++){
System.out.print("Type a name: ");
names[i] = in.nextLine();
}
utilisez sc.nextLine (); deux fois afin que nous puissions lire la dernière ligne de chaîne
sc.nextLine () sc.nextLine ()
C'est parce que le in.nextInt () ne change pas de ligne. Donc, vous "entrez" d'abord (après avoir appuyé sur 3) provoque la lecture de endOfLine par votre in.nextLine () dans votre boucle.
Voici un petit changement que vous pouvez faire:
int nnames;
String names[];
System.out.print("How many names are you going to save: ");
Scanner in = new Scanner(System.in);
nnames = Integer.parseInt(in.nextLine());
names = new String[nnames];
for (int i = 0; i < names.length; i++){
System.out.print("Type a name: ");
names[i] = in.nextLine();
}
Cela parce que in.nextInt () ne reçoit qu'un numéro int, ne reçoit pas de nouvelle ligne. Vous entrez donc 3 et appuyez sur "Entrée", la fin de la ligne est lue par in.nextline ().
Voici mon code:
int nnames;
String names[];
System.out.print("How many names are you going to save: ");
Scanner in = new Scanner(System.in);
nnames = in.nextInt();
in.nextLine();
names = new String[nnames];
for (int i = 0; i < names.length; i++){
System.out.print("Type a name: ");
names[i] = in.nextLine();
}
Vous auriez pu simplement remplacer
names[i] = in.nextLine();
avec names[i] = in.next();
L'utilisation de next () ne renverra que ce qui précède un espace. nextLine () déplace automatiquement le scanner vers le bas après avoir renvoyé la ligne actuelle.