Comment lire des chaînes à partir d'un Scanneur dans une console Java de l'application?
import java.util.Scanner;
class MyClass
{
public static void main(String args[])
{
Scanner scanner = new Scanner(System.in);
int employeeId, supervisorId;
String name;
System.out.println("Enter employee ID:");
employeeId = scanner.nextInt();
System.out.println("Enter employee name:");
name = scanner.next();
System.out.println("Enter supervisor ID:");
supervisorId = scanner.nextInt();
}
}
J'ai eu cette exception, tout en essayant de saisir un nom et de prénom.
Enter employee ID:
101
Enter employee name:
firstname lastname
Enter supervisor ID:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at com.controller.Menu.<init>(Menu.java:61)
at com.tests.Employeetest.main(Employeetest.java:17)
mais son travail si je n'entrez le nom de la première.
Enter employee ID:
105
Enter employee name:
name
Enter supervisor ID:
501
Ce que je veux, c'est de lire la chaîne de caractères complète si elle est donnée comme name
ou firstname lastname
. Quel est le problème ici?
Changement
L'appel de nextInt() a été un problème car il n'a pas pris la nouvelle ligne (lorsque vous appuyez sur entrée). Ainsi, l'appel de scanner.nextLine() qui fait le travail. Voir ma réponse et commentaire dans le code.
scanner.next()
à scanner.nextLine()
.sid=(scanner.nextInt());
elle attend un int et pas un string, c'est pourquoi il travaille avec le 501
L'appel de nextInt() a été un problème car il n'a pas pris la nouvelle ligne (lorsque vous appuyez sur entrée). Ainsi, l'appel de scanner.nextLine() qui fait le travail. Voir ma réponse et commentaire dans le code.
OriginalL'auteur 09Q71AO534 | 2013-07-17
Vous devez vous connecter pour publier un commentaire.
Appel
nextInt()
était un problème qu'il ne ramasse pas de la nouvelle ligne (lorsque vous appuyez sur entrée). Ainsi, l'appel descanner.nextLine()
après qui fait le travail.OriginalL'auteur Sajal Dutta
Ce que vous pouvez faire est d'utiliser comme délimiteur de ligne nouvelle. Jusqu'à ce que vous appuyez sur la touche entrée, vous serez en mesure de le lire comme une chaîne de caractères.
Espère que cette aide.
OriginalL'auteur blganesh101
Remplacer:
avec:
C'est parce que next() saisit seulement le prochain jeton, et l'espace agit comme un séparateur entre les jetons. Par cela, je veux dire que le scanner lit l'entrée: "firstname lastname" comme deux jetons. Donc dans votre exemple, ename serait fixé à firstname et le scanner est en essayant de définir les supervisorId à lastname
scanner.nextLine(); //This is needed to pick up the new line ; System.out.println("Enter EmployeeName:"); ename=scanner.nextLine();
OriginalL'auteur Marco Corona
Vous entrez une valeur null à nextInt, il échouera si vous donnez une valeur null...
j'ai ajouté une valeur null vérifier pour le morceau de code
Essayez ce code:
OriginalL'auteur Fr_nkenstien