Como exatamente o Java Scanner analisa o dobro?
Estou usando uma máquina com Windows 7 cujo "Painel de controle \ Idioma e idioma" é "Dinamarca"
De acordo com a documentação paraScanner:
A localidade inicial de um scanner é o valor retornado pelo método Locale.getDefault ();
Mas quando eu corro o código:
System.out.println(Locale.getDefault());
Scanner sc = new Scanner("1.0");
sc.nextDouble();
Ele gera "en_US" e lança uma java.util.InputMismatchException em sc.nextDouble (). Funciona quando o scanner é inicializado com "1,0"
No entanto, se eu definir explicitamente o local:
Locale.setDefault(Locale.US);
System.out.println(Locale.getDefault());
Scanner sc = new Scanner("1.0");
sc.nextDouble();
Ele gera "en_US" e depois analisa o dobro bem. Estou faltando alguma coisa ou a documentação do Scanner está errada?
Editar Seguindo a sugestão de @Perception, olhei sc.locale () no primeiro exemplo. Imprime "da_DK". Então, por que não é "en_US", quando é isso que está sendo retornado pelo método Locale.getDefault ()?