Wie parse string mit negative Zahl von j2me-api?
Ich habe eine Zeichenkette die zahlen. Ich habe zum Parsen dieses Strings und speichern Sie diese zahlen in int -, float -, etc. Entsprechend
String str = "100,2.0,-100,19.99,0";
Ich kann es tun, indem Integer.parseInt()
und Float.parseFloat()
nach der Trennung. Aber ich kann es nicht für negative Zahl ist. Es wirft Ausnahme java.lang.NumberFormatException
. Nach der Suche web ich konnte keine Lösung für dieses problem.
Also, wie kann ich parse eine negative ganze Zahl aus string und speichern in int mit j2me-api-Satz?
- Verwirrend ist die Formulierung: "ich kann es tun, durch ... nach der Trennung", Sie müssen natürlich aufgeteilt auf
,
um zu analysieren, etwas, dass. Float.parseFloat()
funktionieren sollte, können cou noch mehr code/Kontext für die Ausnahme?- haben Sie halten mit String.startsWith - Methode? zB
if (myString.startsWith("-")) { myString = myString.substring(1); }
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollte es nichts besonderes zu analysieren, negative zahlen im Vergleich zu positiven Zahl.
Der obige code sollte funktionieren einwandfrei.
Was könnte falsch mit Ihrem code, ist, dass du versuchst zu analysieren, einen float mit dem falschen Dezimaltrennzeichen. Wenn Ihr Gebietsschema
.
als dezimal-separator, der obige code ist OK. Wenn jedoch die Ländereinstellung hat,
als Dezimaltrennzeichen, die Analyse schlägt fehl (mit einemNumberFormatException
).So stellen Sie sicher, dass Sie die Aufteilung der ursprünglichen richtig, und dass jeder der Teile nach dem split sind auf einem gültigen format (z.B. mit der richtigen dezimal-Trennzeichen).
Update:
Wenn Sie wissen wollen, wie zu analysieren, dass eine Zahl mit einer bestimmten locale, man könnte zum Beispiel schauen,diese Frage.
Ich hatte ein ähnliches problem heute und das problem war, dass das minus-Zeichen in der Eingabezeichenfolge ist eigentlich ein m-dash Charakter. Das war böse! Das ist also definitiv einen Besuch Wert.
Klarstellung: Nun, ich dachte, Sie wollte zu unterscheiden zwischen int und float. Nur
Float.parseFloat(..)
wird so gut tun, müssen Nicht voncontains
test. 🙂 Verlosen!Ausgabe
Update also diese:
funktioniert auch.
Das ist seltsam, möglicherweise ein encoding-Problem. Integer.parseInt() sollte mit positiven und negativen zahlen, sowie andere ähnliche Methoden (Schweben.Parsen...).
Was Sie tun können, ist immer zu prüfen, ob ein Zeichen '-' oder '+', bevor Sie Sie analysieren und ordnen Sie die Zeichen nach der Analyse.
Diese Methode hat seine Vorteile, als wenn Sie erhalten die Nummer mit der ' + ' - Zeichen, die standard-Integer.parseInt funktioniert nicht.
Können Sie split mit dem Trennzeichen ',' und ob es ein negatives Zeichen, so multiplizieren Sie die Anzahl von
-1
oder tun Sie es durch dieWird es richtig funktioniert.