Prüfen, ob ein String eine Zahl ist

Per Google finde ich nur mehrzeilige Codes und eigene Funktionen. Ich will es aber möglichst einfach haben. Ich meine, ich hätte in Erinnerung, dass so etwas in die Richtung funktioniert:
Java:
String example = "56";
if(example.isNumeric)
{
    // tu was
}
Wie lautet der genaue Methodenname?
 
B

bygones

gibt es nicht.

möglichkeiten:

a) per Double.parseDouble schauen obs klappt
b) char weise durchgehen und isDigit pruefen
c) per regex

plus weitere möglichkeiten
 
Du kannst in einem try-catch Integer.parseInt, Double.parseDouble oder so "ausprobieren", und wenn dir keine NumberFormatException um die Ohren fliegt, ist es eine Zahl. Aber ein Regex-Künstler kann dir sicher auch weiterhelfen (auch wenn das bei doubles wegen der eventuellen e-Schreibwiese nicht ganz trivial ist).
 
Vermutlich stiltechnisch schlecht, aber: Wenn Integer.parseInt(String arg) eine Exception wirft, ist es keine Zahl.

edit: sind wir uns ja einig :)
 
Ich erwarte in dem String nur eine natürliche Zahl. Sprich: Positiv, kein Komme, keine E-Schreibweise, kein Hexalwert, kein L hinter der Zahl, kein gar nichts. Nur eine Zahl, die in diesem Fall sogar aller höchstens 2 Stellen hat.

Ich will keine Fehlermeldungen provozieren, das Programm wird zwar später ohne Kommandozeile laufen, aber trotzdem will ich das 1. nicht und 2. ist es bestimmt verdammt unübersichtlich, wenn man mein Testlauf 2 Werte in der Konsole ausgeben will und erst mal 20 Fehlermeldungen zu sehen bekommt.

Wie mache ich das jetzt am ungeschicktesten, um keine Fehlermeldung zu erhalten?
 
B

bygones

Wie mache ich das jetzt am ungeschicktesten, um keine Fehlermeldung zu erhalten?
Java:
public static boolean isNumeric(String value) {
 try {
    int number = Integer.parseInteger(value);
    return number < 100; 
 }
 catch(NumberFormatException e) {
   return false;
 }
}
so ist aber immer die Gefahr falscheingaben einfach zu schlucken....
 
Man kann auch weiter vorher ansetzen und auf der Konsole mit Scanner.hasNextInt() oder in Swing mit einem Spinner+SpinnerNumberModel arbeiten.
 
Also so weit wie ich das jetzt verstanden habe, hast du den Code so geschrieben, dass er mir auch dann false zurück gibt, wenn der String zwar eine Zahl ist, diese Zahl aber nicht kleiner als 100 ist. Stimmt das? Sollte ich nicht einfach return true; schreiben?

Und wenn ich die Zahl jetzt in eine als int deklarierte Variable speichern will, muss ich diesen Code verwenden?
Java:
int intVariable = Integer.parseInteger(stringVariable);
 
T

Tomate_Salat

hmm ich würde das eher mit regex prüfen:
Java:
String entry = "125";
		
if(entry.matches("[0-9]+"))
	System.out.println("erlaubt");
else
	System.err.println("nicht erlaubt");
edit
 
Zuletzt bearbeitet von einem Moderator:
B

bygones

Also so weit wie ich das jetzt verstanden habe, hast du den Code so geschrieben, dass er mir auch dann false zurück gibt, wenn der String zwar eine Zahl ist, diese Zahl aber nicht kleiner als 100 ist. Stimmt das? Sollte ich nicht einfach return true; schreiben?[/code]
ich habe dein "max 2 Stellen" noch eingebaut, was ja heisst kleiner als 100. und number < 100 gibt ja schon einen boolean zurück.

ansonsten find ich noobadix vorschlag am besten... je nach dem wo die Zahl herkommt gibt es schon mechanismen die einem helfen
 
Da es mich auch gerade beschäftigt hat..
Code:
    public boolean istEineZahl(String eingabe) {
        //Prüfen ob 'eingabe' eine ganze Zahl ist. Wenn ein Zeichen keine Zahl ist, ist das Ergebnis 'false'.
        boolean zahl=true;
        char[] c;
        int i;
        
        eingabe=eingabe.trim();
        c=eingabe.toCharArray();
        
        for (i=0;i < eingabe.length();i++) {
            if (!Character.isDigit(c[i])) {
                zahl=false;
            }
        }
        return zahl;
    }
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben