当我使用扫描程序类的nextDouble()
方法时,如
try (Scanner input = new Scanner(Paths.get("input.txt")))
{
double d = input.nextDouble();
System.out.printf(Locale.getDefault(),"%.2f",d);
}
catch (NoSuchElementException | IllegalStateException | IOException e)
{
e.printStackTrace();
}
nextDouble()
方法获取逗号分隔字符串(如5,12)但printf()
方法打印点分隔数(如5.12)。这种差异似乎是因为使用了不同的Locale值。
为什么nextDouble()和printf()方法使用不同的默认Locale值?