Как именно 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 ()?

Ответы на вопрос(1)

Ваш ответ на вопрос