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?
4 Antworten
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
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.
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
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.
![](https://images.gutefrage.net/media/user/Oubyi/1652363895285_nmmslarge__0_0_120_120_040779a85bcf89fd282fa9af46f30da0.png?v=1652363895000)
OT:
Das ist offensichtlich JAVA und in Deinen Themen steht auch nur Java. Warum schreibst Du dann C++ vor die Frage?
![](https://images.gutefrage.net/media/user/uni61182/1454798642844_nmmslarge.jpg?v=1454798645000)
du baust die while schleife in eine fußgesteuerte do while schleife um und nimmst die Eingabe mit in die schleife fertig