2016-05-11 2 views
-3

У меня есть следующее исключение, пытающееся манипулировать добавляемым значением; Большое спасибо за вашу помощьОшибка NumberFormatException на Java

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.

EDIT:

как упомянуто @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 Вот почему я привел пример, определяющий «Локаль» (непонятно из вопроса, который ожидает OP). –

+0

Справа. Я просто думаю, что ответ будет приятнее, если вы выберете локаль (например, «Locale.FRANCE'), для которой« 20 000 »будут успешно анализироваться. –

Смежные вопросы