Maison >Java >javaDidacticiel >Pourquoi mon scanner Java renvoie-t-il une exception InputMismatchException après une double saisie correcte ?
Valeur double du scanner - InputMismatchException
Question :
Lors de l'utilisation du scanner pour lire une valeur double en Java , pourquoi lance-t-il une exception InputMismatchException après que l'entrée correcte soit fourni ?
Cause :
L'exception se produit lorsque l'entrée ne correspond pas au type de données attendu, généralement en raison d'une incompatibilité de paramètres régionaux.
Solution :
Pour résoudre le problème, spécifiez les paramètres régionaux lors de la création du scanner object :
Scanner scanner = new Scanner(System.in).useLocale(Locale.US);
Explication :
Chaque paramètre régional a son propre ensemble de séparateurs décimaux et de milliers. Par exemple, dans les paramètres régionaux américains, le séparateur décimal est un point ('.') tandis que dans de nombreux paramètres régionaux européens, il s'agit d'une virgule (,).
Lors de la création de l'objet Scanner sans spécifier de paramètres régionaux, Java utilise les paramètres régionaux du système par défaut. Si les paramètres régionaux par défaut utilisent une virgule comme séparateur décimal et que l'entrée est saisie avec un point, le scanner tente de lire l'entrée sous forme d'entier, ce qui entraîne une exception InputMismatchException.
En spécifiant les paramètres régionaux américains, nous nous assurons que le scanner attend un point comme séparateur décimal et lit correctement l'entrée comme une valeur double.
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!