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();
Но после первого ввода 5.1 он выдает:
Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:909) at java.util.Scanner.next(Scanner.java:1530) at java.util.Scanner.nextDouble(Scanner.java:2456) at udacity.MileagePrinter.main(MileagePrinter.java:59) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Выдается сканером для указания того, что полученный токен не соответствует шаблону для ожидаемого типа или что токен находится вне диапазона для ожидаемого типа.
Но, на мой взгляд, все выглядит правильно и должно работать нормально.
Экземпляр этого класса способен сканировать числа в стандартных форматах, а также в форматах локали сканера. Начальная локаль сканера - это значение, возвращаемое методом Locale.getDefault(); оно может быть изменено с помощью метода useLocale(java.util.Locale)
Локализованные форматы определяются в терминах следующих параметров, которые для конкретной локали берутся из объекта DecimalFormat этой локали, df, и его объекта DecimalFormatSymbols, dfs.
Таким образом, в вашем языковом стандарте по умолчанию, безусловно, используется DecimalFormat, который ожидает запятую в качестве десятичного разделителя вместо точки.
Ответ 2
Убедитесь, что вы используете правильный языковой стандарт