NumberFormat akzeptiert alles

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi,

Hilfe mir wird schlecht.
Schaut Euch mal den folgenden Testcode.
Code:
  NumberFormat format = NumberFormat.getNumberInstance(Locale.GERMANY);
  format.setGroupingUsed(false);
  format.setParseIntegerOnly(true);
  format.setMaximumIntegerDigits(4);

  try
  {
    Number num = format.parse("123456...666...#69.blablaTEST..1,nix");
    System.out.println(num.getClass().getName() + ":" + num.toString());
  }
  catch(ParseException e)
  {
    e.printStackTrace();
  }
Ausgabe ist:

java.lang.Long:123456

Kann man dem Formatter beibringen nur gültige Ausdrücke als Zahl anzunehmen?
Der akzeptiert ja jeden Sch... ohne "Unparseable number" oder sonstige ParseException
auszuspucken.
 
R

Roar

Gast
lies mal vorher die API bevor du rumstönst:
The method may not use the entire text of the given string.
zum parsen von zahlen benutze die Wrapperklassen z.B. Integer
 
G

Guest

Gast
Ja aber bei den Wrapperklassen muss man dann immer
unterscheiden, was gelesen wird. Double, Long, Integer etc.
Ein beliebig konfigurierbarer Parser ist es nicht.

Ich möchte die Eingabe des Benutzers (während er etwas eintippt)
prüfen, die Wrapperklassen sind dafür denkbar schlecht.
 
R

Roar

Gast
ja aber in NumberFormat gibts auch keine methode isDouble() oder so ähnlich. also wenn du damit rechnen willst hast du schlechte karten. lies doch einfach alle zahlen als double ein, oder überprüf vorher ( per regex vielleicht)
 
G

Guest

Gast
OK, danke für Deine Antworten.
Ich werde es wohl anders lösen müssen. Bisher hat es mit
NumberFormat einwandfrei funktioniert bis jemand das komische
Verhalten der Eingabefelder entdeckt hat. ISt mir nie aufgefallen.
Insbesondere das mit den Tausendertrennpunkten nervt. Man
kann soviele eingeben, wie man will. Die Eingabe wird sowieso auf
nummerische Werte beschränkt, dennoch ist es mit NumberFormat
bzw. DecimalFormat kaum in den Griff zu kriegen. Ich brauche neben
dem "Erkennen" von Zahlen auch Min-/Max-Länge der Eingabe.
Max. Anzahl von Vor-/Nachkommastellen, wenn Fliesskommazahl,
Min-/Max-Value etc.
Nur der Eingabescanner bzw. InputVerifier und muß angepasst werden.

Ich denke mit RegEx läßt sich das Problem "erschlagen".
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben