Wie erstelle ich eine While-Schleife mit "boolean Überprüfung"?
So, also dieses Mal versuche ich die Eingabemöglichkeit einzuschränken. Ich möchte eine Zahleneingabe von 1 bis 3 begrenzen, alles was unter 1 (also 0) oder über 3 ist, soll nicht akzeptiert werden und wieder zum Anfang springen (darum eine while-Schleife), diese jedoch soll mit Hilfe von einer boolean Abfrage überprüft werden. "Ist es innerhalb von 1-3 -> ja -> dann weiterlassen in der Schleife (mit meinen Befehlen), ansonsten [nicht akzeptiert und zum Anfang gesprungen]".
Joa ich hab keine Ahnung wie ich das machen soll, alle Informatiker dürfen mir dabei gerne helfen.
>>Falls das irgendwie beim Verständnis helfen sollte.
5 Antworten
![](https://images.gutefrage.net/media/default/user/11_nmmslarge.png?v=1551279448000)
Aus der Mathematik in der Schule kennst du vielleicht noch die Vergleichsoperatoren. Beim Programmieren funktioniert das genauso. Das heißt, die folgende Bedingung
(eingabe >= 3) && (eingabe <= 1)
kannst du übersetzen zu
Wenn die Eingabe größer gleich drei und kleiner gleich 1 ist
Wenn ich deinen Fragetext durchlese, möchtest du ja aber genau das Gegenteil. Du kannst jetzt diese Bedingung invertieren:
!((eingabe >= 3) && (eingabe <= 1))
oder gleich so hinschreiben, wie du es haben möchtest:
(eingabe <= 3) && (eingabe >= 1)
Mehr zu den Vergleichsoperatoren findest du hier unter den Equality, Relational, and Conditional Operators in der offiziellen Dokumentation.
Als Schleife bietet sich hier eine Do-While-Schleife an, siehe:
public int angriffsstufeWaehlen(){
int eingabe;
System.out.println("Waehle deine Angriffstufe (1-3):");
do{
eingabe = tastatur.nextInt();
} while ((eingabe <= 3) && (eingabe >= 1));
return eingabe;
}
![](https://images.gutefrage.net/media/user/HugeGameArtGD/1549979624630_nmmslarge__385_50_648_648_35a2a3eff93e16d42cc1bc57cdbb2e4f.png?v=1549979625000)
Hilfe, ist das Greenfoot oder das billige BlueJ?
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
Greenfoot hatten wir zuvor, das ist jetzt BlueJ
![](https://images.gutefrage.net/media/user/HugeGameArtGD/1549979624630_nmmslarge__385_50_648_648_35a2a3eff93e16d42cc1bc57cdbb2e4f.png?v=1549979625000)
Würden sie die Godot Engine verwenden, wäre die Welt in Ordnung.
Java ist längst ausgestorben, C++ und Python ist die Zukunft.
![](https://images.gutefrage.net/media/user/MrCommandBlock/1567440756260_nmmslarge__0_0_800_800_652274479ef18736e8e74e289a116f5b.png?v=1567440756000)
![](https://images.gutefrage.net/media/user/HugeGameArtGD/1549979624630_nmmslarge__385_50_648_648_35a2a3eff93e16d42cc1bc57cdbb2e4f.png?v=1549979625000)
Haben wir auch in der Schule benutzt. Ziemlich hässliches Programm.
![](https://images.gutefrage.net/media/default/user/7_nmmslarge.png?v=1438863662000)
![](https://images.gutefrage.net/media/user/Isendrak/1555747535308_nmmslarge__0_0_160_160_7f828fad18ee7edb96b8daceedaeeadb.png?v=1555747535000)
...
int eingabe;
while(true){
System.out.println("Angriffstufe (1-3):");
eingabe = tastatur.nextInt();
if(eingabe >= 1 && eingabe <= 3) return eingabe;
System.out.println("Ungültige Eingabe.");
}
...
![](https://images.gutefrage.net/media/user/FouLou/1447767292308_nmmslarge__0_133_818_818_f2935abfded669c7e3a25b784947d092.jpg?v=1447767294000)
![](https://images.gutefrage.net/media/user/regex9/1455660989427_nmmslarge__0_13_270_270_615d5a3bc6888f4c1486ce2b4d9d8f60.png?v=1455660989000)
Laut deinem Screenshot hast du die Bedingung bereits formuliert, allerdings ist sie noch nicht ganz richtig.
- Du prüfst, ob die Eingabe über/gleich 3 und unter/gleich 1 ist. Das wird wohl nie zutreffen.
- Du beziehst die Zahlen 3 und 1 noch mit ein, obwohl sie laut Aufgabenstellung doch noch in der erlaubten Menge mit inbegriffen sind.
Des Weiteren sollte der Ausdruck nicht Bedingung des if sein.
![](https://images.gutefrage.net/media/user/RakonDark/1552185525294_nmmslarge__0_0_160_160_7f828fad18ee7edb96b8daceedaeeadb.png?v=1552185525000)
Mir ist unklar was nun wie schleife sein soll ?
eingabe = 0
while (eingabe < 1 || eingabe > 3) {
System.out.println("Wähle ...");
eingabe = tastatur.nextInt();
if (eingabe < 1 || eingabe > 3) {
System.out.println("Bitte nochmal ...");
}
}
... toDo Stuff ...
Das wird in Schulen für Anfänger verwendet... da kann man leider nix gegen machen, aber es muss anscheinend so leicht wie möglich sein...