2016-05-11 18 views
-3

Ich habe die folgende Ausnahme Wert zu manipulieren versuchen, hinzugefügt werden; Vielen Dank für Ihre HilfeFehler auf Java Number

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

Ist das Komma in "20.000" angeblich ein Dezimaltrennzeichen (und der Wert ist zwanzig) oder ist es ein Gruppentrennzeichen (und der Wert ist zwanzigtausend)? –

Antwort

-1

Sie haben kein Komma als Trennzeichen in Zahlen verwenden.

Sie haben 20000 statt 20,000 zu verwenden.

EDIT:

als @MitchWeaver erwähnt, können Sie auch durch Komma ersetzen underescore, so dass es 20_000

+1

können Sie Unterstriche verwenden, zum Beispiel 20_000 ist akzeptabel. –

+0

@MitchWeaver oh ja, du hast Recht. Werde das hinzufügen. Danke! –

+0

Das Komma hier ist möglicherweise ein Dezimaltrennzeichen (für ein nicht-US-Gebietsschema). –

3

Sie einen NumberFormat können Ihre String zu analysieren. So etwas wie,

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(); 
} 

Für weitere Optionen siehe Customizing Formats (The Java Tutorials).

sicher zu sein, die entsprechenden Locale passieren Ihre erwartete Ausgabe anzupassen.

+1

Dies ist der richtige Ansatz, beachten Sie aber, dass die locale durchaus möglich ist, eine, wo das Komma das Dezimaltrennzeichen ist, keine Gruppe Separator. –

+0

@TedHopp Deshalb habe ich ein Beispiel gab eine 'Locale' Angabe (es ist unklar, von der Frage, welche OP erwartet). –

+0

Rechts. Ich denke nur, dass die Antwort schöner wäre, wenn Sie ein Gebietsschema wählen würden (wie zum Beispiel "Locale.FRANCE"), für das "20,000" erfolgreich parsen würde. –