Java While schleife wiederholen?

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;
}
Woher ich das weiß:Berufserfahrung – Informatiker Applikationsentwicklung
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.

Woher ich das weiß:Studium / Ausbildung – Masterstudium Elektrotechnik - Schwerpunkt Embedded Systems

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.

Woher ich das weiß:Berufserfahrung – Ausgebildeter Softwareentwickler

du kannst versuchen != (ungleich) einzubauen