String-Überprüfung

Status
Nicht offen für weitere Antworten.

drac

Neues Mitglied
Hallo, liebe Community,

ich habe folgendes, wahrscheinlich für Profis lächerlich anmutendes Problem: Ich würde gerne in einem Programm von mir eine Überprüfung eines in einem Textfeld eingegebenen Strings machen. Diese Überprüfung soll mir „1“ zurückgeben, wenn es sich bei dem eingegebenen String um einen double-Wert handelt und „-1“, falls es sich z.B. um einen String oder eine Mischung aus Buchstaben und Zahlen handelt. Diese Überprüfung soll wie folgt aussehen:

Code:
public double leseNeuenWertEin(String eingabe) {
/* Überprüfe, ob es sich bei „eingabe“ um einen parsbaren double-Wert handelt
* z.B.: „123456“ sei erlaubt, dahingegen „123abc“ nicht und „abcdef“ erst recht nicht!
* falls ja, dann: „return 1.0;“
* falls nein, dann: „return -1.0;“ und „System.out.println(„Achtung, es sind nur Zahlen erlaubt!“);“
*/
}


Mein Versuch:

Code:
public double leseNeuenWertEin(String eingabe) {
	double zahl = Double.parseDouble(eingabe);
	double bewertung = 0;
	String text = "Achtung, es sind nur Zahlen erlaubt!";
	if (zahl == Double.parseDouble(eingabe)) {
		bewertung = 1.0;
	}	
		if (text.equals(eingabe)){
			bewertung = -1.0;
			System.out.println(text);
		}
	return bewertung;
}


Aber leider klappt das nicht und es werden etliche Fehlermeldungen ausgespuckt. Bitte um Hilfe, da mein Herumirren und -suchen in der Java-API, mit Google und hier im Forum leider nichts brachte.

Vielen Dank im Voraus
drac
 
Hmmm... aua...

Naja, zu deinem Problem: Wie du schon festgestellt hast, kann Double#parseDouble eine Exception werfen (NumberFormatException). Sie tut dies, wenn es sich um einen nicht als Double parsebaren String handelt...

Code:
try{
			Double.parseDouble(eingabe);
			return 1;
		}catch(NumberFormatException e){
System.out.println("Keine Zahl...");
			return -1;
		}

So koennte das dann aussehen... dein Code macht speziell bei der zweiten if-Abfrage keinen Sinn... du machst nicht das, was du eigentlich machen willst...
 
Hallo,

Hobbit wollte damit zum Ausdruck bringen, dass du die durch "Double.parseDouble(...);" geworfene Exception "auffangen" kannst und dann "-1" zurueck geben koenntest.

Anmerkung:

Man koennte allerdings auch einfach folgenden Code vervollstaendigen:

Code:
String s;
String result;
if (s.matches(HIERREGEXPRESS)) {
result = 1;
} else {
result = -1;
}
return result;

Dann wurde man nicht bewusst eine "Exception" provozieren; nur um zu testen, ob eine Eingabe korrekt ist.....
 
Gast hat gesagt.:
Hmmm... aua...

Naja, zu deinem Problem: Wie du schon festgestellt hast, kann Double#parseDouble eine Exception werfen (NumberFormatException). Sie tut dies, wenn es sich um einen nicht als Double parsebaren String handelt...

Code:
try{
			Double.parseDouble(eingabe);
			return 1;
		}catch(NumberFormatException e){
System.out.println("Keine Zahl...");
			return -1;
		}

So koennte das dann aussehen... dein Code macht speziell bei der zweiten if-Abfrage keinen Sinn... du machst nicht das, was du eigentlich machen willst...


Erst einmal herzlichen Dank!
Komisch ist nur, dass ich das bereits versucht hatte und es iwie nicht funktionierte, es nun allerdings klappt, naja, muss man nicht verstehen, Hauptsache, es funktioniert - und das tuts!

Schönen Tag noch und großes Lob ans Forum für die Qualität und Schnelligkeit der Antwort ;-)
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben