Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo, alle zusammen habe ein kleines Problem mit einem regulären Ausdruck.

Habe zwei jTextFields aus denen ich Werte auslese (es sollen nur Zahlen ausgelesen werden).

Zur Überprüfung ob die Eingaben auch korrekt in den jTextFields gemacht wurden wollte ich mit regulären Ausdrücken arbeiten.

Beispeil:

1.jTextField = man gibt den Preis für ein kwH ein

2.jTextField = man gibt an wieviel kwh erzeugt wurde.

- es sollten also keine Buchstaben drin vorkommen und jeweils nur ein punkt in jedem jTextField vorkommen, da ich mich Double Werten arbeite.

Bin zur Zeit bei folgenden Ausdruck angekommen, der jedoch nicht ganz funktioniert:


Pattern p1 = Pattern.compile("[^a-zA-Z][0-9]+[.]?[0-9]+");

Matcher m_preis = p1.matcher(jTextField_preis.getText().toString());

boolean b_preis = m_preis.matches();

Geschrieben

Was heißt, es funktioniert nicht?

Du könntest ohne Regular Expression arbeiten, indem Du versuchst, die Eingabe als double zu parsen und bei einem Fehler entsprechend reagierst. Das sollte hier die schnellste Variante sein.

Peter

Geschrieben

Erstmal danke für deine Antwort, jedoch empfinde ich das als keine sinnvolle Alternative, da wenn ich den Text erstmal als String aus dem jTextField auslesen muss.

Wenn ich den sofort versuche in einen Double umzuwandeln ist ja noch alles ok...

Jedoch wenn der Benutzer dann mal einen Buchstaben eingibt, wird das Programm sofort mit einer Exception abbrechen...

Daher finde ich es micht regulären Ausdrücken eleganter..

Geschrieben

Ich kann nur raten, was Du mir sagen willst:

Du willst in Deinem JTextField auf jeden Tastenklick des Benutzers reagieren und sofortiges Feedback, ob die Eingabe syntaktisch korrekt ist. Beispiel:

"1" -> Prüfung(ok) -> "12" -> Prüfung(ok) -> "12." -> Prüfung(ok) -> "12.k" -> Prüfung(nicht ok)

Das kannst Du mit einer Regular Expression machen und genauso mit einer Umwandlung in ein double. Jedesmal, wenn Du mit der RegEx prüfen würdest, wandelst Du die Eingabe des Benutzers (natürlich die komplette) in ein double um. Wenn die Exception fliegt, hast Du den selben Effekt, wie wenn Dein Pattern nicht matcht. Du musst halt auf die Exception hören und sie fangen und entsprechend verarbeiten. Das hielt ich allerdings für selbstverständlich.

Peter

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...