2016-05-11 43 views
-3

我尝试操作要添加的值时出现以下异常: 非常感谢您的帮助Error Java上的NumberFormatException

java.lang.NumberFormatException: Invalid double: "20,000" 
java.lang.StringToReal.invalidReal(StringToReal.java:63) 
java.lang.StringToReal.parseDouble(StringToReal.java:269) 
java.lang.Double.parseDouble(Double.java:295) 
java.lang.Double.valueOf(Double.java:332) 
+2

''20,000“中的逗号应该是小数点分隔符(而且值是20)还是它是一个组分隔符(并且值是两万)? –

回答

-1

您不使用逗号作为数字中的分隔符。您必须使用20000而不是20,000

编辑:

为@MitchWeaver提到的,你也可以替代逗号underescore,使其20_000

+1

你可以使用下划线,例如20_000是可以接受的。 –

+0

@MitchWeaver哦,是的,你是对的。将添加,谢谢! –

+0

这里的逗号很可能是小数点分隔符(对于非美国语言环境)。 –

3

可以使用NumberFormat解析您的String。类似的,

String str = "20,000"; 
NumberFormat nf = NumberFormat.getNumberInstance(new Locale("en_US")); 
NumberFormat nfIT = NumberFormat.getNumberInstance(Locale.ITALIAN); 
try { 
    System.out.println(nf.parse(str)); // <-- 20000 
    System.out.println(nfIT.parse(str)); // <-- 20 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 

更多选项请参见Customizing Formats (The Java Tutorials)

作为一定会通过适当的Locale您预期的输出相匹配。

+1

这是正确的方法,但请注意,逗号是小数点分隔符而不是组分隔符的语言环境很有可能。 –

+0

@TedHopp这就是为什么我给出了一个指定'Locale'的例子(这个问题不清楚OP的期望)。 –

+0

对。我只是认为如果你选择了一个语法环境(比如'Locale.FRANCE'),那么'“20,000”'可以成功解析。 –