2010-11-26 3 views
0

Ich habe ein Problem in großen Dezimal nein. Das folgende Code-Snippet erklärt mein Problem:Big Decimal Parsing Problem

BigDecimal parsedValue = (BigDecimal) decimalFormat.parse(input); 

Hier Eingabe ist ein String-Typ. Nun angenommen, der Wert der Eingabe ist 135abc24 in diesem Fall ist der Wert von geparstValue aber ich möchte für solche Eingaben überprüfen und geben Sie einen Fehler statt die Zeichenfolge und den Rest des Teils abgeschnitten. Ich möchte nur Eingabe-String hinzufügen kann auch exponentielle Nos enthalten, so kann ich nicht nur für nur numerische Zeichenfolgen überprüfen. Bitte lassen Sie mich wissen, wenn Sie weitere Informationen wünschen oder Frage ist nicht klar,

Vielen Dank im Voraus.

Antwort

6

Sie können BigDecimal String constructor verwenden, um das BigDecimal zu erstellen (siehe den Link für Details) und alle Transformationen anwenden, die Sie auf Ihre Eingabezeichenfolge vor dem Handhaben anwenden möchten. Der Konstruktor gibt NumberFormatException aus, wenn die Eingabe keine gültige Darstellung ist.

+0

Hallo Jens, Danke für deine Antwort. Habe die gewünschten Ergebnisse. Wollte abstimmen, aber nicht 15 Ruf :(Wie auch immer vielen Dank. – Harmit

+0

Gern geschehen, großartig zu hören, dass es geholfen hat :) –

2

Gemäß documentation unterstützt DecimalFormat.parse() ein zweites Argument in Form einer ParsePosition Referenz, die mit der Position aktualisiert wird, an der das Parsing gestoppt wurde. Sie können dann das mit dem Anfang Ihrer Zeichenfolge vergleichen und bestimmen, ob die gesamte Zeichenfolge akzeptiert wurde oder nicht.

+0

Hallo Entspannen, Danke für Ihre Antwort. Ich habe diese Option nicht ausprobiert, da ich mit Jens Antwort das gewünschte Ergebnis erzielt habe. Aber ich werde es versuchen und werde hier definitiv updaten. Vielen Dank! – Harmit

+0

Ja, das ist eine andere Option, um das Problem zu lösen. Ging die alten Fragen durch und fand meinen Kommentar. Besser spät als nie :) – Harmit