# Abfrage ob Eingabe eine Zahl ist



## fibopi (19. Dez 2016)

Hallo Leute,

ich möchte ein Menü in der Konsole programmieren. Mit den Zahlen 1-3 kann man sein Geschlecht auswählen. Nun möchte ich, bevor die Ausgabe stattfindet eine Abfrage einfügen, ob das eingegebene Zeichen eine Zahl ist. Wenn man bei der Eingabe einen Buchstaben eingibt kommt es ja zu einer Fehlermeldung.


Wie frage ich jetzt ab, ob die Variable var eine Zahl ist?




```
import java.util.Scanner;

public class Menu {

    public static void main(String[] args) {
        System.out.println("Gebe deinen Namen ein: ");

        String name = System.console().readLine();

        System.out.println("Bitte waehle dein Geschlecht:");
        System.out.println("1 für weiblich");
        System.out.println("2 fuer maennlich");
        System.out.println("3 fuer anderes");

        Scanner s = new Scanner(System.in);
        int var = s.nextInt();
       

        if( ? ) { //wenn var eine Zahl ist...
            switch(var){
            case 1: System.out.println("Hallo Frau " + name);
            break;
            case 2: System.out.println("Hallo Herr " + name );
            break;
            case 3: System.out.println("Guten Tag " + name );
            break;
            default: System.out.println("Keine Gültige Auswahl. Trotzdem Hallo " + name );
            }
        }else{
            System.out.println("Bitte Zahl eingeben " + name);
        }       
    }
}
```


----------



## MichaProgs (19. Dez 2016)

Ganz simpel:


```
if(String.valueOf(var).matches("[0-9"]){

}
```

Gruß
Micha


----------



## Joose (19. Dez 2016)

Da du von deinem Scanner Objekt die "nextInt()" Methode aufrufst, wird eine Exception fliegen wenn du keine Zahl eingibst! Und es wird gar nicht bis zu deiner if-Bedingung kommen.
Wenn du selber testen willst ob eine Zahl eingeben wurde dann verwendet stattdessen zum Beispiel "nextLine()", teste dann ob es eine Zahl, danach musst du den String nur noch in eine Zahl umwandeln.

@MichaProgs var ist schon ein Integer, wenn du daraus einen String machst wird jede Regex Prüfung auf Ziffern durchgehen


----------



## MarzAttak (20. Dez 2016)

Hier werden verschiedene Varianten, einschließlich deren Vor- und Nachteile, diskutiert, wie man einen String darauf testen kann, ob er eine Zahl enthält (Google ist dein Freund): http://stackoverflow.com/questions/1102891/how-to-check-if-a-string-is-numeric-in-java


----------

