Frage von bohneneintopf, 49

Java - Eingabe in while-Schleife zurücksetzen?

Ich habe in einem Programm als zwei Auswahlmöglichkeiten 1 und 2 und möchte, dass mir eine Falschmeldung angezeigt wird wenn ich eine Zahl eingebe, die nicht 1 oder 2 ist. Das habe ich über while-Schleife gemacht, aber wie verhindere ich, dass diese unendlich ist, sondern setze die Eingabe zurück? Sodass immer wieder neu gefragt wird?

Mein Quellcode:

int a = 1;
int b = 2;

String eingabe = sc.next();
a = Integer.parseInt(eingabe);
b = Integer.parseInt(eingabe);


while(a != 1 || b != 2)
{

System.out.println("Falsche Eingabe");

}

Was muss jetzt noch in die while-Schleife rein, damit sie nicht unendlich wird?

Antwort
von PeterKremsner, 30

Das ist reiner missbrauch einer while Schleife ;)

Und du brauchst nur eine Variable nicht 2.

Btw das ist Java nicht C++, prüfe also bei parseInt auf eine Exception falls eingabe nicht konvertiert werden kann.

while(1)
{
  string eingabe = sc.next();
  a = Integer.parseInt(eingabe);
  if(a == 1 || a == 2)
   break;
  else
   System.out.println("Falsche Eingabe");
}
restlicher code.

Das Programm läuft so lange in der while schleife wie du eine Zahl ungleich 1 oder 2 eingibst.

Natürlich kannst du die If Anweisung auch durch ein switch ersetzen. Dann wird aber das Aussteigen aus der schleife ohne goto nur mit einer Hilfsvariable möglich.

Antwort
von Oubyi, 27

OT:
Das ist offensichtlich JAVA und in Deinen Themen steht auch nur Java. Warum schreibst Du dann C++ vor die Frage?

Antwort
von EightSix, 16

Du musst natürlich dem Anwender auch die Chance geben einen anderen Wert einzugeben. Bei dir wird der Wert nur einmal eingelesen und in der Schleife erfolgt nur noch eine Ausgabe.

Expertenantwort
von KnusperPudding, Community-Experte für Java, 8

Eine sehr ähnliche Problemstellung gab es erst vor kurzem, vielleicht helfen dir die Antworten hier bereits weiter:

https://www.gutefrage.net/frage/java-try-catch-wie-zurueck-auf-try?foundIn=tag_o...

Keine passende Antwort gefunden?

Fragen Sie die Community