¿Cómo exactamente Java Scanner analiza el doble?
Estoy usando una máquina con Windows 7 cuyo "Panel de control \ Reloj, idioma y región" es "Dinamarca"
Según la documentación deEscáner:
La configuración regional inicial de un escáner es el valor devuelto por el método Locale.getDefault ();
Pero cuando ejecuto el código:
System.out.println(Locale.getDefault());
Scanner sc = new Scanner("1.0");
sc.nextDouble();
Da salida "en_US" y luego lanza una java.util.InputMismatchException en sc.nextDouble (). Funciona cuando el escáner se inicializa con "1,0"
Sin embargo, si configuro explícitamente la configuración regional:
Locale.setDefault(Locale.US);
System.out.println(Locale.getDefault());
Scanner sc = new Scanner("1.0");
sc.nextDouble();
Da salida "en_US" y luego analiza el doble bien. ¿Me estoy perdiendo algo, o la documentación de Scanner es incorrecta?
Editar Siguiendo la sugerencia de @Perception, miré a sc.locale () en el primer ejemplo. Imprime "da_DK". Entonces, ¿por qué no es "en_US", cuando eso es lo que está devolviendo el método Locale.getDefault ()?