# while - Schleife unterbrechen mit break;



## Oli (26. Feb 2008)

Hallo,

Ich habe ein eigentlich triviales Problem:


```
while (rs.next()) {
    for (int i = 0; i < md.getColumnCount(); i++) {
        if (i == 0) {
	rows[rowCounter][i] = convertDateToMyDateFormat(rs.getString(i + 1));
        } else {
	rows[rowCounter][i] = rs.getString(i + 1);
	}
    }
    if (!all && rowCounter == 5) {
                System.out.println("Jetzt is aber Schluß!");
	break;
    }
    rowCounter++;
}
```

Also wenn all false ist und rowCounter 5 soll die Schleife verlassen werden. Das if - Statement wird auch passiert und ich bekomme die Ausgabe, aber die Schleife bricht nicht ab!

Wieso?

Grüße Oli


----------



## Saxony (26. Feb 2008)

Hiho,

isein bekannstes Problem. Dein break steht innerhalb eines anderen Blockes (if) und nicht direkt als Anweisung im while Block.
Musste halt bissl drum rum schreiben. 


```
boolean end = false;
while (rs.next() && !end) {
    for (int i = 0; i < md.getColumnCount(); i++) {
        
        if (i == 0) {
            rows[rowCounter][i] = convertDateToMyDateFormat(rs.getString(i + 1));
        } else {
            rows[rowCounter][i] = rs.getString(i + 1);
        }
    }

    if (!all && rowCounter == 5) {

        System.out.println("Jetzt is aber Schluß!");
        end = true;
    }
    rowCounter++;
}
```

bye Saxony


----------



## ARadauer (26. Feb 2008)

schreibt er wirklich "Jetzt is aber Schluß!" hin und läuft dann innerhalb der while weiter?
kann ich mir nicht vorstellen, sowas

```
int i =0;
	while(i<5){
		System.out.println(i);
		if(i==2){
			break;
		}
		i++;	
	}
```
liefert definitv nur 0 1 2,
ich kann da jetzt auf auf den ersten Blick keinen Fehler erkennen.

zur not kannst ja sowas machen


```
boolean running = true;
	while (rs.next() && running) { 
    for (int i = 0; i < md.getColumnCount(); i++) { 
        if (i == 0) { 
   rows[rowCounter][i] = convertDateToMyDateFormat(rs.getString(i + 1)); 
        } else { 
   rows[rowCounter][i] = rs.getString(i + 1); 
   } 
    } 
    if (!all && rowCounter == 5) { 
                System.out.println("Jetzt is aber Schluß!");
                running = false;
   break; 
    } 
    rowCounter++; 
}
```


----------



## ARadauer (26. Feb 2008)

@Saxony: hatten sie selbe idee zur lösung ;-)

aber das if dürfte keine probleme machen, oder?


----------



## Oli (26. Feb 2008)

@ARadauer:

Ja, kann ich mir selbst nicht erklären. Naja ich werd mit der running-Varibable versuchen, dann sollte es auf jeden Fall klappen

@Saxony:

Hm, hab ich zwar noch nie Probleme damit gehabt, denn in for-Schleifen finktioniert das ja auch und sogar noch weitaus teifer verschachtelt...

Danke an alle


----------



## Saxony (26. Feb 2008)

Hiho,

hmm stimmt im Test macht if keine Probleme! 
Hier steht zum Beispiel auch nix dazu.

Eine andere Möglichkeit die man aber schon fast gar nicht zeigen darf:


```
MyLabel:
while (rs.next()) {
    for (int i = 0; i < md.getColumnCount(); i++) {
        
        if (i == 0) {
            rows[rowCounter][i] = convertDateToMyDateFormat(rs.getString(i + 1));
        } else {
            rows[rowCounter][i] = rs.getString(i + 1);
        }
    }

    if (!all && rowCounter == 5) {

        System.out.println("Jetzt is aber Schluß!");
        break MyLabel;
    }
    rowCounter++;
}
```

[edit]
Im oben genannten Link steht aber noch ein Hinweis zu break und switch:



			
				GoToJava2 hat gesagt.:
			
		

> Eine weitere nützliche Anwendung des gelabelten break besteht darin, eine Schleife aus einer darin liegenden switch-Anweisung zu verlassen.



[/edit]

bye Saxony


----------

