Java: Scanner-Zahleneingabe auf Grenzen prüfen

English Deutsch

In vielen Fällen, wenn man eine interaktive Kommandozeilen-Schnittstelle erstellen möchte, muss man prüfen, ob eine vom Benutzer eingegebene Zahl gültig ist – und wenn nicht, soll der Benutzer sie erneut eingeben.

Hier ist eine einfache statische Methode, um zu prüfen, ob eine vom Benutzer eingegebene Zahl innerhalb einer vorgegebenen Grenze liegt:

guardedInput.java
/**
 * Lässt den Benutzer einen ganzzahligen Wert eingeben, bis dieser die
 * vorgegebenen Bedingungen erfüllt
 *
 * @param msg Die Eingabeaufforderung für den Benutzer.
 * @param lower Die untere Grenze, inklusiv
 * @param upper Die obere Grenze, inklusiv
*/
private static int guardedInput(String msg, int lower, int upper) {
    Scanner scanner = new Scanner(System.in);
    while (true) {
        System.out.print(msg);
        int val = -1;
        try {
        val = scanner.nextInt();
        } catch (InputMismatchException ex) {
        System.out.println("Ungültiger Wert: Bitte eine Zahl eingeben!");
        }
        if (val < lower) {
        System.out.println("Ungültiger Wert: Muss größer sein als " + (lower - 1));
        } else if (val > upper) {
        System.out.println("Ungültiger Wert: Muss kleiner sein als " + (upper + 1));
        } else {
        return val;
        }
    }
}

Check out similar posts by category: Java