Je rencontre un problème avec Scanner car il semble prendre le type de valeur d'entrée et forcer la prochaine fois que l'utilisateur saisit une valeur du même type. Je ne trouve aucune raison pour laquelle ce code ne fonctionne pas et me donne une InputMismatchException car j'ai écrit un code comme celui-ci un million de fois et je n'ai pas eu de problèmes.Impossible de trouver une raison pour InputMismatchException
public void register(){
Scanner input=new Scanner(System.in);
System.out.println("What course would you like to register for?");
String course_name = input.next();
System.out.println("What section?");
int section = input.nextInt();
for (int i = 0; i < courses.size(); i++) {
if (courses.get(i).getCourse_name().equals(course_name)) {
if (courses.get(i).getCourse_section() == section) {
courses.get(i).AddStudent(this.first_name+" "+this.last_name);
}
}
}
input.close();
}
Ce problème est non seulement pour la méthode register(), mais l'ensemble du programme, par exemple, avec ce code:
public void Options() {
Scanner input=new Scanner(System.in);
while (true) {
System.out.println("What would you like to do (Enter corresponding number):" + "\n" + "1) View all courses" + "\n" + "2) View all courses that are not full" + "\n" + "3) Register on a course" + "\n" + "4) Withdraw from a course" + "\n" + "5) View all courses that the current student is being registered in" + "\n" + "6) Exit");
int user = input.nextInt();
if (user == 1)
viewAll();
if (user == 2)
viewAllOpen();
if (user == 3)
register();
if (user == 4)
withdraw();
if (user == 5)
viewRegistered();
if (user == 6) {
Serialize();
break;
}
}
Si l'une des méthodes, telles que le registre nécessaire à l'utilisateur d'entrer une chaîne, l'int utilisateur = input.nextInt(); provoquera une exception InputMismatchException.
Check http://stackoverflow.com/questions/13102045/scanner-is-skipping-nextline-after-using-next-nextint-or-other-nextfoo – TheLostMind