Как именно Java Scanner анализирует в два раза?
м с использованием Windows 7 машина, чья "Панель управления \ Часы, Язык и Регион " является "Дания"
Согласно документации длясканер:
Сканерисходная локаль - это значение, возвращаемое методом Locale.getDefault ();
Но когда я запускаю код:
System.out.println(Locale.getDefault());
Scanner sc = new Scanner("1.0");
sc.nextDouble();
Это выводитen_US» а затем выдает исключение java.util.InputMismatchException в sc.nextDouble (). Работает когда инициализируется сканер1,0"
Однако, если я явно установлю Locale:
Locale.setDefault(Locale.US);
System.out.println(Locale.getDefault());
Scanner sc = new Scanner("1.0");
sc.nextDouble();
Это выводитen_US» а потом разбирает дубль просто отлично. Я что-то упустил, или документация для сканера не так?
редактировать Следуя предложению @Perception, я посмотрел на sc.locale () в первом примере. Это печатаетda_DK», Так почему бы и нет?en_US», когда это то, что возвращается методом Locale.getDefault ()?