Scanner double value - InputMismatchException Resolved
Encountering an InputMismatchException when using scanner to read double values is a common issue faced by Java developers. This exception occurs when the token retrieved from the input does not match the expected data type or is out of range for that type.
Problem:
Consider the following code:
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();
When running this code and inputting values such as "5.1" for both gas and efficiency, it throws an InputMismatchException.
Cause:
The default locale used by the scanner may not match the expected format of the input values. For example, in locales where "," is used as the decimal delimiter, an input like "5,1" would be interpreted as a valid double value, whereas in locales where "." is used as the delimiter, it would not.
Solution:
To circumvent this issue, it is necessary to specify the locale for the scanner using the useLocale() method.
Scanner scanner = new Scanner(System.in).useLocale(Locale.US);
By setting the locale to Locale.US, the scanner will expect values in the US format, where "." is used for the decimal delimiter.
Explanation:
The useLocale() method allows the developer to define the locale used by the scanner for parsing values. This ensures that the scanner expects values in the correct format for the specified locale.
The above is the detailed content of How to Resolve InputMismatchException When Reading Double Values with Java Scanner?. For more information, please follow other related articles on the PHP Chinese website!