Wie überprüfe ich ein Textfeld ob es numerisch ist in JAVA?

... komplette Frage anzeigen

2 Antworten

Eine weitere Möglichkeit besteht darin (nach Eingabe oder bei jedem Key-Release) die Zahl gleich folgendermaßen zu prüfen.

Nimm den String und verwandle ihn in eine Zahl (mittels Integer.parseInt() oder Double.parseDouble()). Wird keine Exception geworfen, so handelt es sich um eine Zahl.

Hierbei muss man jedoch noch etwas aufpassen: Während der Eingabe sind Strings evtl. keine Zahlen (wie "+"). Aber bei vollständiger Eingabe (ENTER) ist "+" dann nicht mehr erlaubt, hingegen "+4" schon. Wie dies während der Eingabe aussehen könnte habe ich hier demonstriert:http://www.freimann.eu/eliphi/phi/brems/bremsweg.html

Leider ist obige Lösung in JavaScript und nicht in Java, fürs Prinzip sollte es jedoch reichen.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von KnusperPudding
14.12.2015, 09:30

Wieso stellst du die Frage neu obwohl du diese im selben Zug beantwortest? Rein aus interesse: Möchtest du eine Antwort auf die Frage oder die Frage lösen?


Wird keine Exception geworfen[...]

So sollte man aber nicht mit Exceptions verfahren, das ist extrem unsauber, dafür gibt es genug andere Lösungen, um genau das zu vermeiden.



nach Eingabe oder bei jedem Key-Release

Zu welchem Zeitpunkt geprüft werden soll, ist überhaupt nicht klar durch die Frage. Aber am KeyEvent würde ich das nicht ausmachen. entweder  zu dem Zeitpunkt, an dem Konkret der Inhalt des Textfeldes überprüft werden soll, oder direkt beim Eingeben, und da wäre es das Caret Event, was wiederum wie du es schon ansprichst, dazu führt, dass Teil-Eingaben ungültig werden.

1

Du hast mehrere Möglichkeiten um zu überprüfen ob es sich bei dem eingegebenen Wert um eine Zahl handelt. 

Um was für eine Zahl soll es sich denn handeln?

Ganzzahlen?  (Nur Positive oder auch negative?)

Zahlen mit Nachkommastellen? Im englischen Format, wobei 0 als Delimiter verwendet wird? 

Deutsches Format mit Komma als Trennzeichen? 

Zusätzliche Trennzeichen für 1000er gestattet?

Was das betrifft, solltest du dir erstmal genaue Gedanken machen.

Des weiteren bin ich nicht wirklich ein Fan vom Kopieren Lösung anderer, und dieses Problem ist sehr weit verbreitet, sodass es bereits sehr sehr viele Einträge zu exakt diesem Thema wieder finden und das will ich nicht als meinen Vorschlag ausgeben.

Eine relativ flexible Methode wäre es, mit einer Regular Expression nach zu prüfen.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von KnusperPudding
14.12.2015, 09:24

Da ich gerade gesehen habe, dass die Frage neugestellt wurde, bitte ich um Beantwortung der genannten Fragen um helfen zu können.

0

Was möchtest Du wissen?