while

  • 4 Antworten
  • Neuester Beitrag
Diskutiere while im Android App Entwicklung im Bereich Betriebssysteme & Apps.
L

LoLmAnxD1998

Ambitioniertes Mitglied
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:
 
Vacutainer

Vacutainer

Erfahrenes Mitglied
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;
			
		}
 
L

LoLmAnxD1998

Ambitioniertes Mitglied
Ach ja danke :D
 
J

JustinTime

Fortgeschrittenes Mitglied
Und pass genau auf wo du while verwendest. Mach das niemals im UI-Thread oder deine App wird höchstwahrscheinlich abschmieren/von Android gekillt.
 
A

amfa

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