while

L

LoLmAnxD1998

Ambitioniertes Mitglied
0
Hallo

Ich wollte eine while Funktion einbauen, die dafür sorgt das während alle checks(boolean) false sind arbeitet und dann aufhört wenn alle true sind.
Hier der Code:

Code:
void kartenFestlegen() {
						
			do {
			k1 = random.nextFloat();
			if (k1 >= 0 && k1 < 0.1 && check1 == false) {
				check1 = true;
				this.pos = 0;
				return;
			}
			if (k1 >= 0.1 && k1 < 0.2 && check2 == false) {
				check2 = true;
				this.pos = 1;
				return;
			}
			if (k1 >= 0.2 && k1 < 3 && check3 == false) {
				check3 = true;
				this.pos = 2;
				return;
			}
			if (k1 >= 3 && k1 < 4 && check4 == false) {
				check4 = true;
				this.pos = 3;
				return;
			}
			if (k1 >= 4 && k1 < 5 && check5 == false) {
				check5 = true;
				this.pos = 4;
				return;
			}
			if (k1 > 5 && k1 < 6 && check6 == false) {
				check6 = true;
				this.pos = 5;
				return;

			}
			if (k1 > 6 && k1 < 7 && check7 == false) {
				check7 = true;
				this.pos = 6;
				return;

			}
			if (k1 > 7 && k1 < 8 && check8 == false) {
				check8 = true;
				this.pos = 7;
				return;

			}
			if (k1 > 8 && k1 < 9 && check9 == false) {
				check9 = true;
				this.pos = 8;
				return;

			}
			if (k1 > 9 && k1 < 10 && check10 == false) {
				check10 = true;
				this.pos = 9;
				return;

			} while (check1==false || check2==false || check3==false || check4==false || check5==false||check6==false||check7==false||check8==false||check9==false||check10==false);
			[COLOR="Red"]}[/COLOR]
			
			//return iret;
			
		}

Aber bei der rot gefärbten Klammer zeigt Eclipse mir folgenden Fehler : "Syntax error, insert "while ( expression );" to complete BlockStatements"

Wo ist der Fehler ? :cursing:
 
Die Klammer ist falsch gesetzt. Die muss vor das while.

Code:
void kartenFestlegen() {
						
			do {
			k1 = random.nextFloat();
			if (k1 >= 0 && k1 < 0.1 && check1 == false) {
				check1 = true;
				this.pos = 0;
				return;
			}
			if (k1 >= 0.1 && k1 < 0.2 && check2 == false) {
				check2 = true;
				this.pos = 1;
				return;
			}
			if (k1 >= 0.2 && k1 < 3 && check3 == false) {
				check3 = true;
				this.pos = 2;
				return;
			}
			if (k1 >= 3 && k1 < 4 && check4 == false) {
				check4 = true;
				this.pos = 3;
				return;
			}
			if (k1 >= 4 && k1 < 5 && check5 == false) {
				check5 = true;
				this.pos = 4;
				return;
			}
			if (k1 > 5 && k1 < 6 && check6 == false) {
				check6 = true;
				this.pos = 5;
				return;

			}
			if (k1 > 6 && k1 < 7 && check7 == false) {
				check7 = true;
				this.pos = 6;
				return;

			}
			if (k1 > 7 && k1 < 8 && check8 == false) {
				check8 = true;
				this.pos = 7;
				return;

			}
			if (k1 > 8 && k1 < 9 && check9 == false) {
				check9 = true;
				this.pos = 8;
				return;

			}
			if (k1 > 9 && k1 < 10 && check10 == false) {
				check10 = true;
				this.pos = 9;
				return;
                       [COLOR="Red"] }[/COLOR]
			} while (check1==false || check2==false || check3==false || check4==false || check5==false||check6==false||check7==false||check8==false||check9==false||check10==false);
			
			
			//return iret;
			
		}
 
  • Danke
Reaktionen: LoLmAnxD1998
Ach ja danke :D
 
Und pass genau auf wo du while verwendest. Mach das niemals im UI-Thread oder deine App wird höchstwahrscheinlich abschmieren/von Android gekillt.
 
Die Schleife bricht doch ab, wenn du irgend eins deiner checks auf true setzt, wegen der "return" statements. DU schreibst aber sie soll erst aufhören, wenn alle true sind.

Und "nextFloat()" gibt doch nur Werte zwischen 0.0 und 1.0 zurück

Im Moment scheint mir die ganze Methode etwas sinnlos.
Bzw die Schleife ist überflüssig.
Es wird immer eines der ersten 3 if-Statements zutreffen. und die methode wird verlassen.
Der dürfte niemals überhaupt dazu kommen, dein while-statement zu überprüfen.
du könntest sogar while(true) dahinschreiben ohne das es einen Unterschied macht.
 

Ähnliche Themen

J
Antworten
3
Aufrufe
1.164
Jakobi81
J
S
  • SpecialFighter108
Antworten
8
Aufrufe
754
markus.tullius
markus.tullius
Zurück
Oben Unten