# schleife verlassen



## soulkiss (5. Jul 2006)

ich habe ein ratespiel porgrammiert, bei dem man 10 versuche hat eine zufällig gewählte zahl zu erraten, aber ich komm     
wenn man die zahl richtig geraten hat nicht aus meine schleife raus, hab es schon mit den beiden varianten versucht, aber jedesmal kommt immer wieder die eingabe erfasseRatezahl. Ich will die schleife aber nicht mit break oder return verlassen.

```
public void auswertung() throws IOException{
        int i = 0;
	int versuche = 0;
	for (versuche = 1; versuche <= 10; versuche++){
		
	boolean gefunden = false;
	do{
		/** erfasst die eingabeZahl */
		erfasseRateZahl();
					
		if (zufallsZahl == eingabeZahl){
	        System.out.print("Herzlichen glueckwunsch !! Sie haben die Zahl beim " +versuche+ " Versuch erraten.");                      
			gefunden = true;	
		}
			if  (zufallsZahl < eingabeZahl){
				System.out.print ("Die Zufallszahl ist kleiner");
				}
				if (zufallsZahl > eingabeZahl){
					System.out.print("Die Zufallszahl ist groesser");
					}		
	
		      if (eingabeZahl != zufallsZahl){
			   System.out.println("");
			  System.out.println(" Schade Sie haben die Zufallszahl " + zufallsZahl+ " immernoch nicht erraten.");
			  }
		}while (!gefunden);			
      }
}

und den

public void auswertung() throws IOException{
	int i = 0;
	int versuche = 0;
		
             for (versuche = 1; versuche <= 10; versuche++){
		boolean loop = true;
		while(loop)
		{ 
			/** erfasst die eingabeZahl */
			erfasseRateZahl();
					
		if (zufallsZahl == eingabeZahl){
		System.out.print("Herzlichen glueckwunsch !! Sie haben die Zahl beim " +versuche+ " Versuch erraten.");
			loop = false;	
		}
			if  (zufallsZahl < eingabeZahl){
				System.out.print ("Die Zufallszahl ist kleiner");
				}
				if (zufallsZahl > eingabeZahl){
					System.out.print("Die Zufallszahl ist groesser");
					}		
	
		if (eingabeZahl != zufallsZahl){
			System.out.println("");
			System.out.println(" Schade Sie haben die Zufallszahl " + zufallsZahl+ " immernoch nicht erraten.");
			}
		}
				
}}
```
[/quote]


----------



## merxleben (5. Jul 2006)

Hallo,

du hast grundsätzlich zwei möglichkeiten. Entweder du packst die Auswertung deiner gefunden Variable mit in den Kopf deiner for Schleife. Das sähe dann so aus


```
for(int i=0;i<10&&!gefunden;i++) {
   .
   .
   .
}
```

Oder du machst das ganze mit einer while Schleife. Das sähe dann so aus


```
while(i<10&&!gefunden) {
   .
   .
   .
}
```

Es geht bei beiden Varianten darum, dass sowohl der Zähler als auch das gefunden Flag gleichzeitig ausgewertet werden.

Schönen abend noch

Martin


----------



## Brainiac (5. Jul 2006)

Bei beiden Bsp: wird die for Schleife 10 mal ausgeführt, daher auch beim richtigen erraten wieder die Eingabe. Nimm entweder den Zähler mit in die while-Schleife


```
while (!gefunden && zaehler <= 10)
```

oder das break; Kommando. Es ist dafür gedacht, wen zur Ausführungszeit nur bekannt ist wie oft etwas maximal gemacht werden muss.

```
while(!gefunden);
if (gefunden)
    break;
```


----------



## soulkiss (5. Jul 2006)

cool, es funktioniert, dankeschön !!!!!


----------

