2016-05-11 75 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」'可以成功解析。 –