String auf Werte prüfen

Status
Nicht offen für weitere Antworten.

hyperion

Bekanntes Mitglied
Hallo,

ich habe einen String geben, welchen ich prüfen will, ob er nur Zahlen enthält.
Gibt es hier eine Mehtode wie string.contains(char[]), welche mir true zurückgibt, falls nur die in char[] enthaltenen Zeichen in string enthalten sind?

Ich hatte shcon die Idee, dass ich den String einfach zu einem Integer caste und dann evtl. auf die FormatException reagieren, aber wäre das nicht schlechter Programmierstil?

mfg hyperion
 
Zuletzt bearbeitet:
Wenn es dir konkret nur um das Beispiel geht:

Java:
		String input = "142acw1";
		
		for (int i = 0; i < input.length(); i++) {
			if (Character.isDigit(input.charAt(i))) 
				System.out.println(input.charAt(i) + " ist eine Zahl");
			else 
				System.out.println(input.charAt(i) + " ist keine Zahl");
		}
 
-3 ist keine Zahl... :autsch:

Ich hatte shcon die Idee, dass ich den String einfach zu einem Integer caste und dann evtl. auf die FormatException reagieren, aber wäre das nicht schlechter Programmierstil?

Eigentlich ist das schlecht. Man sollte Exceptions nicht für irgendeine Form von "Kontrollfluss" verwenden.

Wenn es nur im Integers geht, ist die Lösung von Sempah (wenn du noch Vorzeichen beachtest - bedenke ggf. aber auch sowas wie "- 123" und so...) wohl in Ordnung.

Speziell wenn es auch um floats gehen soll, gibt es kaum eine andere Möglichkeit, als Exceptions zu verwenden. Diese Überprüfung sollte dann aber auf jeden Fall in eine klare, kleine Methode verpackt werden:
Code:
private static boolean isValidFloat(String string)
{
    try
    {
        Float.parseFloat(string);
        return true;
    }
    catch (NumberFormatException e)
    {
        return false;
    }
}

Ich hatte schon in mehreren anderen Threads die "Challenge" aufgestellt, dass doch mal jemand eine Regular Expression erstellen sollte, die genau auf die in Java gültigen float- oder double-Zahlen matcht. Bisher hat sich noch niemand getraut 😀 Deswegen ist in diesem Ausnahmefall die Sache mit der Exception IMHO OK.
 
Man könnte das mit RegEx prüfen:
Java:
String test1 = "12345";
String test2 = "12.345";
System.out.println(!test1.matches("\\d*\\D+\\d*"));
System.out.println(!test2.matches("\\d*\\D+\\d*"));
 
Man könnte das mit RegEx prüfen:
Java:
String test1 = "12345";
String test2 = "12.345";
System.out.println(!test1.matches("\\d*\\D+\\d*"));
System.out.println(!test2.matches("\\d*\\D+\\d*"));
wie Marco schon sagte... -3 ist keine Zahl ?

wenn schon dann eher [c]-?\\d+\\.?\\d*[/c] wobei das natuerlich auch noch nicht das ganze Wahre ist
 
Hallo,

ah danke ich habe jetzt Pattern.matches(...) als sehr nützliche Methode kennengelernt.

mfg hyperion
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben