你应该为扫描仪精确设置区域设置。
Scanner scanner = new Scanner(system.in).useLocale(Locale.US);
从文档:
此类的实例能够扫描标准格式以及扫描仪的语言环境格式的数字。扫描程序的初始语言环境是Locale.getDefault()
方法返回的值。可以通过useLocale(java.util.Locale)
方法更改它
。本地化的格式是根据以下参数定义的,对于特定的语言环境,将从该语言环境的DecimalFormat
对象df
以及其和DecimalFormatSymbols
对象dfs中获取。
因此,你的默认语言环境肯定使用了DecimalFormat
,它期望逗号作为小数点分隔符而不是点。