# While schleife mit 2 Bedingungen geht nicht!



## Gameneuling (16. Jan 2014)

Moin erstmal grade extra für die Frage registriert^^
Folgendes Problem meine While schleife mit 2 Bedingugen geht nicht.
Folgender Code funktioniert nicht <.<:


```
int Richtig;
while((Richtig > 20) || (Falsch < 12))
{
Richtig = Richtig + 1;
System.out.println(Richtig);
}
```

Die Konsole rechnet einfach Richtig ins unendliche weiter +1 obwohl die schleife doch eigtl. aufhören sollte oder?


----------



## Kazbah (16. Jan 2014)

ist das dein ganzer code? 

Meiner Meinung nach hast du "Falsch" nicht richtig deklariert.

Die Schleife hört erst auf wenn Richtig < 20 ist oder Falsch > 12 ist.


----------



## wolfgang63 (16. Jan 2014)

Wie sind den Richtig und Falsch initialisiert?


----------



## Kazbah (16. Jan 2014)

Ich warte erst noch auf den code


----------



## Gameneuling (16. Jan 2014)

hab mich da vertahn, beide sind so deklariert:


```
int Richtig = 0;
int Falsch = 0;
```

Ich versteh einfach nicht warum es nicht geht <.<


----------



## Kazbah (16. Jan 2014)

damit die schleife funktioniert muss:


```
int Richtig > 20

 //oder 

int Falsch < 12
```

bei dir steht aber:


```
int Richtig = 0;
int Falsch = 0;
```

da Falsch ja immer 0 bleibt ändert sich nur Richtig immer um einen Wert.
Deine Schleife ist also immer wahr da der Wert von Falsch nie geändert wird.


----------



## Gameneuling (16. Jan 2014)

-
Im stupid <.<


----------



## Kiesen (16. Jan 2014)

So wie du die Schleife deklariert hast, ist es eine Endlosschleife, da dein Falsch = 0 und die Abbruchbedingung für Falsch nie erfüllt wird. In den Code müsste noch: 


```
Falsch = Falsch+1;
```

Deine while-Schleife bricht nämlich nicht ab wenn Richtig erfüllt ist, sondern läuft weiter, da auch immer gefragt wird ob Falsch < 12 ist. Im Endeffekt so: (Bedingung_eins = true || Bedingung_zwei = false) da die zweite Bedingung false ist, wird nicht abgebrochen.


----------



## Gameneuling (16. Jan 2014)

fuuuc stimmt 
Wie kann ichs denn so machen, dass er aus der Schleife rausgeht wenn eine Bedingung nicht mehr stimmt?


----------



## Kiesen (16. Jan 2014)

Mach es so: 


```
while( Richtig < 20 && Falsch < 12) {
	Richtig = Richtig + 1;
	System.out.println(Richtig);
	}
```

Hoffe das hilft.


----------



## Gameneuling (16. Jan 2014)

dann würde er doch nur aus der schleife gehen wenn beide Bedingungen richtig sind oder?
(was bei dem programm leider nie der Fall ist)


----------



## Honor (17. Jan 2014)

Gameneuling hat gesagt.:


> Moin erstmal grade extra für die Frage registriert^^
> Folgendes Problem meine While schleife mit 2 Bedingugen geht nicht.
> Folgender Code funktioniert nicht <.<:
> 
> ...



Bei mir läuft dein Code genau richtig: IDE Netbeans 7.4, allerdings mit JDK 8


----------



## Natac (17. Jan 2014)

Honor hat gesagt.:


> Bei mir läuft dein Code genau richtig: IDE Netbeans 7.4, allerdings mit JDK 8


Du hast "Richtig" und "Falsch" im Schleifen-Kopf vertauscht. So geht es natürlich


----------



## Kiesen (17. Jan 2014)

Gameneuling hat gesagt.:


> dann würde er doch nur aus der schleife gehen wenn beide Bedingungen richtig sind oder?
> (was bei dem programm leider nie der Fall ist)




Nochmal kurz zu meine Ansatz:


```
while( Richtig < 20 && Falsch < 12) {
    Richtig = Richtig + 1;
    System.out.println(Richtig);
    }
```

Bei dieser Schleife stehen am Anfang beide Bedingungen auf false. Bei dieser Deklaration bricht die Schleife ab wenn eine Bedingung true wird, da beides erfüllt seien muss (durch das &&) . Bei deiner Deklaration vom Anfang muss beides erfüllt sein, sonst bricht die Schleife nicht ab.


----------



## ARadauer (17. Jan 2014)

Variablen schreibt man klein


----------



## Honor (18. Jan 2014)

Natac hat gesagt.:


> Du hast "Richtig" und "Falsch" im Schleifen-Kopf vertauscht. So geht es natürlich



Oh das war nicht bewusst!^^


----------

