Maison >Java >javaDidacticiel >Comment résoudre l'exception InputMismatchException lors de la lecture de valeurs doubles avec Java Scanner ?

Comment résoudre l'exception InputMismatchException lors de la lecture de valeurs doubles avec Java Scanner ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-09 06:15:161006parcourir

How to Resolve InputMismatchException When Reading Double Values with Java Scanner?

Valeur double du scanner - InputMismatchException résolue

La rencontre d'une exception InputMismatchException lors de l'utilisation du scanner pour lire des valeurs doubles est un problème courant rencontré par les développeurs Java. Cette exception se produit lorsque le jeton extrait de l'entrée ne correspond pas au type de données attendu ou est hors de portée pour ce type.

Problème :

Considérez le code suivant :

double gas, efficiency, distance, cost;
Scanner scanner = new Scanner(System.in);

System.out.print("Enter the number of gallons of gas in the tank: ");
gas = scanner.nextDouble();
System.out.print("Enter the fuel efficiency: ");
efficiency = scanner.nextDouble();

Lors de l'exécution de ce code et de la saisie de valeurs telles que "5.1" pour le gaz et l'efficacité, il génère un InputMismatchException.

Cause :

Les paramètres régionaux par défaut utilisés par le scanner peuvent ne pas correspondre au format attendu des valeurs d'entrée. Par exemple, dans les paramètres régionaux où "," est utilisé comme délimiteur décimal, une entrée telle que "5,1" sera interprétée comme une valeur double valide, alors que dans les paramètres régionaux où "." est utilisé comme délimiteur, il ne le serait pas.

Solution :

Pour contourner ce problème, il est nécessaire de spécifier les paramètres régionaux du scanner à l'aide de useLocale() méthode.

Scanner scanner = new Scanner(System.in).useLocale(Locale.US);

En définissant les paramètres régionaux sur Locale.US, le scanner attendra des valeurs au format US, où "." est utilisé pour le délimiteur décimal.

Explication :

La méthode useLocale() permet au développeur de définir les paramètres régionaux utilisés par le scanner pour analyser les valeurs. Cela garantit que le scanner attend des valeurs dans le format correct pour les paramètres régionaux spécifiés.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn