Java中的parseDouble导致NumberFormatException

nik*_*kos 9 java numberformatexception

我试图从属性文件加载信息,我有以下代码:

anInt = Integer.parseInt(prop.getProperty("anInt"));
aDouble = Double.parseDouble(prop.getProperty("aDouble"));
Run Code Online (Sandbox Code Playgroud)

虽然第一行工作正常,第二个我试图加载一个双变量抛出一个NumberFormatException.具体的异常消息是:

Exception in thread "main" java.lang.NumberFormatException: For input string: "78,5"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1222)
at java.lang.Double.parseDouble(Double.java:510)
at Assignment1.BaseStation.readPropertyFile(BaseStation.java:59)
at Assignment1.BaseStation.main(BaseStation.java:83)
Run Code Online (Sandbox Code Playgroud)

Mal*_*olm 19

如果要使用解析,则必须使用句点作为分隔符,而不是逗号Double.parseDouble().它在Double类的文档中说

FloatingPointLiteral ... [是]在Java语言规范的词汇结构部分中定义.

从Java语言规范:

FloatingPointLiteral:

  • 数字.Digits opt ExponentPart opt FloatTypeSuffix opt
  • .Digits ExponentPart opt FloatTypeSuffix opt
  • Digits ExponentPart FloatTypeSuffix opt
  • Digits ExponentPart opt FloatTypeSuffix

如果要考虑区域设置,可以使用java.text.NumberFormat:

NumberFormat nf = NumberFormat.getInstance();
double number = nf.parse(myString).doubleValue();
Run Code Online (Sandbox Code Playgroud)