2016-11-09 2 views
0

Я продолжаю получать UnparseableNumberException при анализе валюты FR.UnparseableNumberException при анализе валюты FR

Мой код:

Locale locale = new Locale("fr", "FR"); 
NumberFormat numberFormat = NumberFormat 
       .getCurrencyInstance(locale); 
try { 
    Number number = numberFormat.parse("€ 314,00"); 
    System.out.println("sadsadsadsad"+number.doubleValue()); 
} catch (ParseException e1) { 
    // TODO Auto-generated catch block 
    e1.printStackTrace(); 
} 

Консоль вывода:

java.text.ParseException: Unparseable number: "€ 314,00" 
    at java.text.NumberFormat.parse(Unknown Source) 
    at PS6.main(PS6.java:26) 
+0

Возможный дубликат [Что такое исключение NumberFormatException и как его исправить?] (Http://stackoverflow.com/questions/39849984/what-is -a-NumberFormatException-и-как-может-я-Fix-It) – xenteros

ответ

3

Во Франции, которая использует евро в качестве валюты, цены отформатированы с символом валюты в конце концов, с пробелом перед ним ; не в начале. Таким образом, "€ 314,00" является недопустимым, потому что символ "€" неуместен, и вместо этого у вас должно быть "314,00 €".

NumberFormat numberFormat = NumberFormat.getCurrencyInstance(Locale.FRANCE); 
Number number = numberFormat.parse("314,00 €"); 
System.out.println(number); 

Кроме того, вместо того чтобы создавать новый язык, вы можете использовать встроенный в Locale.FRANCE.

Обратите внимание, что это не относится ко всем странам, использующим евро; например, Ирландия помещает знак евро перед номером, без пробела (и с точкой вместо запятой в качестве десятичного разделителя). Таким образом, для локали new Locale("en", "IE") правильный формат будет "€314.00" ...