Pourquoi l'exception InputMismatchException se produit-elle lors de l'obtention de valeurs doubles ?
En Java, lorsque vous utilisez Scanner pour lire des valeurs doubles, une exception InputMismatchException peut se produire si l'entrée n'adhère pas strictement au format décimal attendu.
Comprendre le problème :
Le code fourni contient les méthodes checkValueWithin et AskForMarks. checkValueWithin est destiné à valider la saisie numérique dans une plage spécifiée.
Le problème survient dans la méthode AskForMarks, où la saisie de l'utilisateur est censée être une valeur double comprise entre 0 et 30. Cependant, la saisie peut être formatée. incorrectement, provoquant l'échec du scanner lors de l'analyse de la valeur double.
Correction :
Ce problème peut être résolu en veillant à ce que la saisie de l'utilisateur soit formatée à l'aide d'une virgule comme séparateur décimal au lieu d'un point. Par exemple, au lieu de 1,2, saisissez 1,2. Cela correspond à la représentation des valeurs doubles en Java.
Voici le code modifié pour AskForMarks :
public void askForMarks() { double marks[] = new double[student]; int index = 0; Scanner reader = new Scanner(System.in); while (index < student) { System.out.print("Please enter a mark (0..30): "); marks[index] = (double) checkValueWithin(0, 30); index++; } }
Cette modification garantit que les valeurs doubles sont saisies correctement, empêchant le scanner de rencontrer une exception InputMismatchException.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!