Java While schleife wiederholen?
Wie mach ich das, wenn ich eine schleife haben will die bei einer eingabe (wenn Sie falsch ist) sich wiederholt bis sie richtig ist
5 Antworten
Ich hab für sowas irgendwann mal eine Funktion gebaut, die einfach so oft nachfragt, bis der Benutzer was gescheites eingibt:
private static String getInput(Scanner scanner, String pattern, String message, String errorMessage) {
String result = "";
do {
System.out.println(message);
result = scanner.nextLine();
if (!result.matches(pattern)) {
System.out.println(errorMessage);
}
} while (!result.matches(pattern));
return result;
}
Der Funktion übergibst du:
- einen Scanner
- einen regulären Ausdruck in dem steht, welche Eingabe du erwartest
- einen Text, was der Benutzer eingeben soll
- eine Fehlermeldung, falls der Benutzer was sinnloses eingibt.
Z.B.:
Scanner scanner = new Scanner(System.in);
System.out.println(getInput(scanner, "[jJnN].*", "Bist du zufrieden?", "Bitte mit Ja oder Nein antworten"));
Mit do-while:
boolean korrekt;
do {
// Scanner oder was auch immer
if (eingabe.equals("Richtige eingabe")
korrekt = true;
} while (!korrekt);
Mit while:
boolean korrekt;
while (!korrekt) {
// Scanner oder was auch immer
if (eingabe.equals("Richtige eingabe")
korrekt = true;
}
While ohne boolean:
while (true) {
// Scanner oder was auch immer
if (eingabe.equals("Richtige eingabe")
break;
}
while(!EingabeRichtig)
{
/* Wiederholung */
}
EingabeRichtig kannst du als "bool" ausführen, der gesetzt wird, wenn deine Eingabe entsprechend richtig ist. Du kannst auch direkt in der Klammer die Auswertung deiner Eingabe schreiben und anschließend mit einem Ziel-String vergleichen (ich kenne die exakten Funktionen nicht, da ich selten mit Java unterwegs bin, aber ca. so):
while(!compare("1", Scanner(input)))
{
/* Wiederholung */
}
Hier würde der Input (gelesen mit dem Scanner) mit "1" verglichen werden. Solange der Input nicht "1" ist, wird die While-Schleife wiederholt.
Du nimmst die Eingabe an, prüfst sie als Abbruchbedingung in der Schleife, wenn sie richtig ist verlässt du die Schleife, wenn nicht dann wiederholst du die Schleife.
du kannst versuchen != (ungleich) einzubauen