Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Unterschied zwischen break und continue in einer Schleife
Ich wollte mal nachfragen, ob zwischen den Schlüsselwörtern break und continues innerhalb einer beliebigen Schleife eigentlich ei signifikanter Unterschied besteht?
ich habe da eben mal innerhalb einer For- und While Schleife getestet und keinen festgestellt. Ich wollte mich aber trotzdem nochmals vergewissern?
Ich wollte mal nachfragen, ob zwischen den Schlüsselwörtern break und continues innerhalb einer beliebigen Schleife eigentlich ei signifikanter Unterschied besteht?
Also beim continue geb ich dir recht, aber ob man jetzt ein break macht oder das mit einem return löst ist dann auch schon egal. Das kommt nämlich aufs gleiche raus und ist beides gegen Djikstras Vorgaben für eine strukturierte Programmierung (D-Diagramme, Strukturierte Programmierung ? Wikipedia).
Wobei ich aber noch dazusagen muss, dass besonders ein break bei so kurzem Code sehr viel übersichtlicher, eleganter und effizienter ist, als das ganze über zusätzliche Abfrage zu lösen.
public static int replaceFirstFound(List<Integer> list1, List<Integer> list2) {
Set<Integer> set = new HashSet<Integer>(list1);
for (int i = 0; i < list2.size(); i++) {
if (set.contains(list2.get(i))) {
list2.set(i, 4);
return i;
}
}
return -1;
}
Natürlich kann der Rückgabetyp auch [c]void[/c] sein, je nach dem ob man den Index braucht oder nicht.
joa schon habe ich gerade nur runtergetippt zwischen TV und ICQ aber ich denke ihr wisst was damit gemeint ist. Sry wenn der Code gerade Schrott war^^
und klar verstehe ich auch eure Lösungsansätze und das auslagern .... aber ihr stellt es so dar, als ob es falsch wäre, so habe ich den Eindruck, aber es ist ja nur ein anderer Weg ... ich will hier keinem auf den Schlips treten ... ich lerne gern dazu aber ich meine falsch wäre Break und Continue ja nicht ... klar kommt es auf den Codeumfang und ich verstehe auch, dass eine Auslagerung in vielen Fällen auch sinnvoll ist
Ich versuche, diese Diskussion mal wieder zum Wesentlichen, nämlich zum Unterschied zwischen break und continue, zurückzuführen. Wie Pl4gu33 ja bereits erwähnt hat, brichst du mit break komplett aus einer Schleife aus (endgültig), wohingegen bei continue nur der aktuelle Durchlauf (mit dem aktuellen Element) abgebrochen und mit dem nächsten fortgefahren wird. D.h. du bleibst innerhalb dieser Schleife, jedoch werden die Anweisungen hinter continue für den aktuellen Druchlauf nicht mehr ausgeführt, oder noch einfacher: mit continue springst du zum Kopf der Schleife (bzw. zum Fuß bei do-while-Konstrukten).
Also ich bin auch für das Auslagern in Methoden anstatt breaks zu verwenden aber es gibt noch eine Art diese zu verwenden.
Java:
int index = 5;
z: for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (index == j) {
System.out.println("Ersten beiden Schleifen: " + index);
index += 4;
break z;
}
}
System.out.println("Nach der Inneren Schleife ( Ersten beiden Schleifen )");
}
System.out.println("---------------------");
index = 5;
y: for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (index == j) {
System.out.println("Letzten beiden Schleifen: " + index);
index += 4;
continue y;
}
}
System.out.println("Nach der Inneren Schleife ( Letzten beiden Schleifen ) ");
}
Also für den fall das man zwei ineinander verschachtelte Schleifen hat, und das
Java:
break;
wäre in der innere Schleife, würde man auch nur die Innere abbrechen aber mit
Java:
break z;
( Siehe Code ) kann man auch veranlassen das beide abgebrochen werden. Und das zweite Beispiel soll nur verdeutlichen das ein
Java:
continue y;
zur äußere Schleife springt und nicht raus wie bei break z;.
Wenn man diese nicht in Methoden auslagern möchte kann man auch einfach dafür sorgen, das die Bedingung der Schleifen nicht mehr
Und da sind wir wieder beim Thema GOTO und wieso man sowas grundsätztlich nicht machen sollte. Also weder breaks, continues oder methoden die mittendrin was returnen.