Wie erstelle ich eine While-Schleife mit "boolean Überprüfung"?

5 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

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;
}

Hilfe, ist das Greenfoot oder das billige BlueJ?


KevinAntwortet 
Beitragsersteller
 23.05.2019, 22:32

Greenfoot hatten wir zuvor, das ist jetzt BlueJ

0
MrCommandBlock  22.05.2019, 21:05

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...

1
HugeGameArtGD  22.05.2019, 21:06
@MrCommandBlock

Würden sie die Godot Engine verwenden, wäre die Welt in Ordnung.

Java ist längst ausgestorben, C++ und Python ist die Zukunft.

0
...
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.");
}
...

FouLou  22.05.2019, 20:31

Die If Bedingung braucht ein und. Die ist auch true wenn ich 5 eingebe.

1
Isendrak  22.05.2019, 20:33
@FouLou

Oh verdammt! Ich hatte zuerst ne andere Formulierung gebastelt und davon ist das Oder noch übrig geblieben. Ich korrigiers noch schnell, hab noch 90 Sekunden dafür. ^^

0

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.

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 ...