Benutzereingaben validieren
Behandeln Sie ungültige Eingaben elegant
Benutzereingaben validieren ist eine kostenlose Java Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Java Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Java Academy-Kurs umfasst insgesamt 4 Lektionen.
Eingaben niemals ungeprüft übernehmen
Benutzer geben falsche Werte ein: Buchstaben, wo Zahlen erwartet werden, Leerzeichen oder Werte außerhalb des zulässigen Bereichs. Robuste Programme überprüfen die Eingabe und fragen erneut nach, anstatt abzustürzen.
In dieser Lektion lernen Sie robuste Muster zur Validierung mit Scanner kennen.
Vor dem Einlesen prüfen
Die einfachste Absicherung ist hasNextInt(). Lesen Sie die Ganzzahl nur ein, wenn tatsächlich eine verfügbar ist.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("42");
if (scanner.hasNextInt()) {
System.out.println("Got: " + scanner.nextInt());
} else {
System.out.println("Please enter a number");
}
scanner.close();
}
}Bis zur Gültigkeit wiederholen
Eine Wiederholungsschleife fragt so lange nach, bis eine gültige Ganzzahl eingegeben wird. Wenn das Token ungültig ist, verwerfen Sie es mit next() und fahren Sie fort.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("abc xyz 50");
int value = -1;
while (scanner.hasNext()) {
if (scanner.hasNextInt()) {
value = scanner.nextInt();
break;
}
scanner.next();
}
System.out.println("Accepted: " + value);
scanner.close();
}
}Bereich prüfen
Neben dem Typ müssen Werte häufig innerhalb eines bestimmten Bereichs liegen. Lesen Sie die Zahl ein und überprüfen Sie sie, bevor Sie sie akzeptieren.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("7");
int n = scanner.nextInt();
if (n >= 1 && n <= 10) {
System.out.println("Valid: " + n);
} else {
System.out.println("Out of range");
}
scanner.close();
}
}Beim Parsen try-catch verwenden
Eine Alternative besteht darin, zunächst eine ganze Zeile einzulesen und sie anschließend zu parsen. Ungültiger Text wird dabei mit NumberFormatException abgefangen. So bleibt der Eingabepuffer einfach.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("notanumber");
String line = scanner.nextLine();
try {
int n = Integer.parseInt(line.trim());
System.out.println("Parsed: " + n);
} catch (NumberFormatException e) {
System.out.println("Invalid number: " + line);
}
scanner.close();
}
}Nicht leeren Text validieren
Bei Texteingaben sollten Sie leere Eingaben ablehnen. isBlank() liefert für leere oder ausschließlich aus Leerraum bestehende Zeichenketten den Wert true.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(" ");
String name = scanner.nextLine();
if (name.isBlank()) {
System.out.println("Name cannot be empty");
} else {
System.out.println("Hello, " + name);
}
scanner.close();
}
}Eine Auswahl validieren
Bei Menüauswahlen sollten Sie bestätigen, dass der Wert zu den erlaubten Optionen gehört, bevor Sie ihn verarbeiten.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("y");
String choice = scanner.next().toLowerCase();
if (choice.equals("y") || choice.equals("n")) {
System.out.println("You chose: " + choice);
} else {
System.out.println("Please enter y or n");
}
scanner.close();
}
}Eine wiederverwendbare Validierungsmethode
Lagern Sie die Validierung in eine Methode aus, damit Sie die Logik wiederverwenden können. In diesem Beispiel prüft eine Methode, ob ein Alter in einem sinnvollen Bereich liegt.
public class Main {
static boolean isValidAge(int age) {
return age >= 0 && age <= 120;
}
public static void main(String[] args) {
System.out.println(isValidAge(30));
System.out.println(isValidAge(-5));
}
}Typ und Bereich kombinieren
Eine echte Validierung kombiniert häufig eine Typprüfung, eine Bereichsprüfung und eine Wiederholungsschleife zu einer robusten Routine.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("abc 200 45");
int valid = -1;
while (scanner.hasNext()) {
if (scanner.hasNextInt()) {
int n = scanner.nextInt();
if (n >= 1 && n <= 100) {
valid = n;
break;
}
} else {
scanner.next();
}
}
System.out.println("Final: " + valid);
scanner.close();
}
}Klare Fehlermeldungen
Eine gute Validierung gibt dem Benutzer außerdem hilfreiches Feedback. Erklären Sie genau, was falsch war und was erwartet wird, statt nur einen allgemeinen Fehler zu melden.
public class Main {
static String validate(String input) {
if (input.isBlank()) return "Input is empty";
if (!input.matches("\\d+")) return "Only digits allowed";
return "OK";
}
public static void main(String[] args) {
System.out.println(validate(""));
System.out.println(validate("12a"));
System.out.println(validate("123"));
}
}Validierungsstrategie
Prüfen Sie den Typ mit der hasNext-Familie oder mit try-catch, überprüfen Sie Bereich und Leerheit, wiederholen Sie die Eingabe bis zu einem gültigen Wert und erklären Sie Fehler immer klar.
Schnelltest
Testen Sie Ihre Kenntnisse zur Eingabevalidierung.
Zusammenfassung
Sie haben gelernt, Eingaben robust zu validieren:
- Sichern Sie die Eingabe mit
hasNextIntab oder parsen Sie sie innerhalb eines try-catch-Blocks - Verwenden Sie Wiederholungsschleifen und verwerfen Sie ungültige Tokens mit
next() - Prüfen Sie Wertebereiche und lehnen Sie leeren Text mit
isBlankab - Lagern Sie wiederverwendbare Validierungen in eigene Methoden aus
- Geben Sie klare, konkrete Fehlermeldungen aus
Häufig gestellte Fragen
Ist die Lektion „Benutzereingaben validieren“ kostenlos?
Ja — der vollständige Text von „Benutzereingaben validieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Java Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Java Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Benutzereingaben validieren“?
Behandeln Sie ungültige Eingaben elegant Du übst Java Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Java Academy zu starten?
Keine Vorkenntnisse erforderlich. Java Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Benutzereingaben validieren“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Java Academy-Lektion Code schreiben und ausführen?
Ja. Jede Java Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Eingaben mit Scanner lesen
- Zahlen und Zeilen lesen
- Benutzereingaben validieren
- Alternative mit BufferedReader