Unterschied zwischen break und continue in einer Schleife

K

kossy

Bekanntes Mitglied
Hallo zusammen !

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?

Grüße
Kossy
 
P

pl4gu33

Top Contributor
Break unterbricht die Schleife

Contine nur den Durchlauf

Java:
public static void main(String[] args) {
		// TODO Auto-generated method stub
		 for(int i=0;i<10;i++){
			 if(i==2){
				 continue;
			 }
			 if(i==5){
				 break;
			 }
			 System.out.println(i);
		 }
		
	}

hier dazu die Ausgabe:

0
1
3
4

man sieht, dass nach einem Continue alls normal weiter läuft ... bei 5 dann abgebrochen wird
 
B

bygones

Gast
beides sachen die man meiner Ansicht nach nicht braucht und nicht nutzen sollte.

break ist ein return in einer ausgelagerten methoden und bei continue invertiert man die if bedingung und laesst den code dann dort laufen.
 
P

pl4gu33

Top Contributor
beides sachen die man meiner Ansicht nach nicht braucht und nicht nutzen sollte.

break ist ein return in einer ausgelagerten methoden und bei continue invertiert man die if bedingung und laesst den code dann dort laufen.

mm ich weiß nicht ich finde es kann schon sinnvoll sein ....

wenn man z.b. zwei schleifen hat und zwei sachen von 2 Schleifen vergleichen will....

schleife 1{
schleife2{
if(suche irgendwas)
... tue dann was
break;


und dann wird wieder gesucht in der nächsten Schleife2 sowas kann schon sinnvoll sein finde ich

ich hoffe ich hab das jetzt einigermaßen erklärt, was ich damit meine... daher wollte ich jetzt nur mal wissen, warum das schlecht sein soll/würde :)

klar könnte man das auch anders lösen ... aber ist ja z.b. eine Möglichkeit :)
 
Zuletzt bearbeitet:
faetzminator

faetzminator

Gesperrter Benutzer
klar könnte man das auch anders lösen ... aber ist ja z.b. eine Möglichkeit :)

Eben, auslagern ;)

Statt
Java:
Element foundElement = null;
for (Element element : elements) {
    if (element.getId() == someId) {
        foundElement = element;
        break;
    }
}
kann man es einfach in eine Methode auslagern:
Java:
public Element findElement(int someId) {
    for (Element element : elements) {
        if (element.getId() == someId) {
            return element;
        }
    }
    return null;
}
 
P

pl4gu33

Top Contributor
okay, bei einer Schleife is das ja klar ;)

Mein Beispiel bezog sich eher darauf, dass man z.b. 2 Container hat und nur etwas bestimmtes ändern will.

doofes Beispiel:
sagen wir 2 Arrays mit Zahlen....

jeweils die erste Zahl die gleich ist wie im ArrayList1 soll geändert werden. Ist jetzt ein doofes Beispiel aber mir fällt gerade kein kleines ein :D

Java:
ArrayList<Integer> arraylist1=new  ArrayList<Integer>();
		 ArrayList<Integer> arraylist2=new  ArrayList<Integer>();
		
		 for(int i=0;i<arraylist1.size();i++){
			 for(int y=0;y<arraylist1.size();y++){
				 if(i==y){
					 y=4;
					 break;
				 }
			 }
		 }
 
Zuletzt bearbeitet:
faetzminator

faetzminator

Gesperrter Benutzer
Wir sprechen von Schleifen:
Ich wollte mal nachfragen, ob zwischen den Schlüsselwörtern break und continues innerhalb einer beliebigen Schleife eigentlich ei signifikanter Unterschied besteht?
Und dein Code kann auch problemlos so geschrieben werden, auch wenn der Sinn dahinter nicht gerade ersichtlich ist ;)
Java:
public static void printNumbers() {
    for (int i = 0; i < 10; i++) {
        if (i == 5) {
            return;
        }
        if (i != 2) {
            System.out.println(i);
        }
    }
}
 
P

pl4gu33

Top Contributor
Wir sprechen von Schleifen:

Und dein Code kann auch problemlos so geschrieben werden, auch wenn der Sinn dahinter nicht gerade ersichtlich ist ;)
Java:
public static void printNumbers() {
    for (int i = 0; i < 10; i++) {
        if (i == 5) {
            return;
        }
        if (i != 2) {
            System.out.println(i);
        }
    }
}

jaa klar, verstehe schon dass das so geht :D
das war ja auch nur ein Beispiel, dass Break und Continue nicht das Gleiche machen :D :D

aber es geht mir eher darum, warum man es nicht anwenden soll, wenn es so klappt ich mein für irgendwas muss es ja da sein :))

mir ist schon klar, dass es alles auch anders geht :D

ps. ich habe oben noch ein anderes Bsp gemacht
 
B

bygones

Gast
gebs auf - jedes deiner bsp laesst sich einfacher und uebersichtlicher in einer ausgelagerten Methode ausdruecken ;-)
 
bERt0r

bERt0r

Top Contributor
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.
 
Zuletzt bearbeitet:
faetzminator

faetzminator

Gesperrter Benutzer
... mal ganz abgesehen davon, dass dieser Code überhaupt nicht nach deiner Beschreibung arbeitet ;)

jeweils die erste Zahl die gleich ist wie im ArrayList1 soll geändert werden. Ist jetzt ein doofes Beispiel aber mir fällt gerade kein kleines ein :D
Öhm, aber das würde ich eher so lösen:

Java:
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.
 
P

pl4gu33

Top Contributor
... mal ganz abgesehen davon, dass dieser Code überhaupt nicht nach deiner Beschreibung arbeitet ;)

joa schon :D habe ich gerade nur runtergetippt zwischen TV und ICQ :D aber ich denke ihr wisst was damit gemeint ist. Sry wenn der Code gerade Schrott war^^ :D

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 :D 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 :D
 
Zuletzt bearbeitet:
H

HimBromBeere

Top Contributor
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).
 
truesoul

truesoul

Top Contributor
Hallo.

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
Java:
true
ergibt :)
 
bERt0r

bERt0r

Top Contributor
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.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Y Unterschied zwischen WindowBuilder und herkömmlichen erstellen des GUI´s? Java Basics - Anfänger-Themen 9
U Worin besteht der Unterschied zwischen call by reference und call by value? Java Basics - Anfänger-Themen 14
E Unterschied zwischen new und import Java Basics - Anfänger-Themen 5
B Unterschied zwischen (List<T> a) und (T[] a) Java Basics - Anfänger-Themen 7
Aprendiendo Unterschied zwischen Referenzvariable und Instanzvariable. Java Basics - Anfänger-Themen 2
N Unterschied zwischen Checked und Unchecked Exceptions Java Basics - Anfänger-Themen 12
schoenosrockos Unterschied zwischen Objekten und vererbungen Java Basics - Anfänger-Themen 1
J Variablen Unterschied zwischen lokalen-, Instanz-, Klassenvariablen Java Basics - Anfänger-Themen 6
L Unterschied zwischen Klassen - und Instanzvarbiablen Java Basics - Anfänger-Themen 1
M Unterschied zwischen Classpath eines Eclipse Projektes und dem CLASSPATH? Java Basics - Anfänger-Themen 3
D Unterschied zwischen double und Double Java Basics - Anfänger-Themen 4
Q Unterschied zwischen static und keinem Modifier Java Basics - Anfänger-Themen 15
K Unterschied zwischen Jar, war und ear Dateien Java Basics - Anfänger-Themen 3
T Unterschied zwischen Integrationstest und JUnit test? Java Basics - Anfänger-Themen 12
F Exakte Unterschied zwischen Java EE und Java SE? Java Basics - Anfänger-Themen 4
J Unterschied zwischen statische und nicht statische Methoden? Java Basics - Anfänger-Themen 14
O Java unterschied zwischen Interface und Interface_Referenzen!!?? Java Basics - Anfänger-Themen 7
J unterschied zwischen awt und swing Java Basics - Anfänger-Themen 6
B Unterschied zwischen String & char Array? Java Basics - Anfänger-Themen 5
B Was ist der unterschied zwischen Singleton und Strategy? Java Basics - Anfänger-Themen 6
B Variablen: unterschied zwischen Klassen und Instanzvariable Java Basics - Anfänger-Themen 2
H Unterschied zwischen 2 Date in Sekunden am einfachsten? Java Basics - Anfänger-Themen 5
tanja Der Unterschied Zwischen Arrays in Java und ADA Java Basics - Anfänger-Themen 11
ModellbahnerTT Unterschied zwischen zwei Frame close Varianten Java Basics - Anfänger-Themen 3
V Unterschied zwischen J2EE und JEE ?? Java Basics - Anfänger-Themen 1
N Was ist der Unterschied zwischen ArrayList und Vector? Java Basics - Anfänger-Themen 3
A Unterschied zwischen Checked und unchecked Exception Java Basics - Anfänger-Themen 3
C Unterschied zwischen Polymorphie und Typcasting Java Basics - Anfänger-Themen 10
G Unterschied zwischen den Datenstrukturen Java Basics - Anfänger-Themen 2
M Unterschied zwischen . Compiler und JIT-Compiler,Hotspot-VM Java Basics - Anfänger-Themen 2
C Unterschied zwischen ArrayList und Vector Java Basics - Anfänger-Themen 2
I_Oscuridad Unterschied zwischen Objektorientiert und prozedural ? Java Basics - Anfänger-Themen 8
G Was ist der unterschied zwischen return und ? Java Basics - Anfänger-Themen 3
G Unterschied zwischen Java 2 bis 6 Java Basics - Anfänger-Themen 12
G Unterschied zwischen SwingWorker und "normalem" Th Java Basics - Anfänger-Themen 3
J Unterschied zwischen 2 Grafik Methoden Java Basics - Anfänger-Themen 2
G unterschied zwischen in.read() und in.read(byte [] b, int. Java Basics - Anfänger-Themen 3
G Unterschied zwischen SQL Timestamp und Java Java Basics - Anfänger-Themen 2
A Unterschied zwischen HashMap und Hashtable Java Basics - Anfänger-Themen 20
G Unterschied zwischen Assoziation, Aggregation u. Komposition Java Basics - Anfänger-Themen 7
G Unterschied zwischen & und && Java Basics - Anfänger-Themen 1
G Unterschied zwischen Ant und Maven Java Basics - Anfänger-Themen 9
K Unterschied zwischen Color.white und Color.WHITE? Java Basics - Anfänger-Themen 4
A Unterschied zwischen String & Stringbuffer! Java Basics - Anfänger-Themen 14
O Unterschied zwischen static und public Java Basics - Anfänger-Themen 2
G Was ist der Unterschied zwischen length und length()? Java Basics - Anfänger-Themen 7
N Unterschied zwischen Beans finden Java Basics - Anfänger-Themen 2
L Unterschied zwischen Objekten, Arrays und Strings Java Basics - Anfänger-Themen 2
G Unterschied zwischen Integer und int in java Java Basics - Anfänger-Themen 8
C Unterschied zwischen, Applet, Java und JavaScript Java Basics - Anfänger-Themen 3
K gibt es einen unterschied zwischen .JAVA und .java ? Java Basics - Anfänger-Themen 4
ven000m Unterschied zwischen: ADT & generischer Programmierung Java Basics - Anfänger-Themen 2
H Unterschied zwischen Stack und Array Java Basics - Anfänger-Themen 3
M Unterschied zwischen J2SE 5.0 Update x und J2SE 1.4.x Java Basics - Anfänger-Themen 4
C Unterschied zwischen equals und == ? Java Basics - Anfänger-Themen 6
D Unterschied zwischen Referenz auf Objekt/Instanz von Objekt Java Basics - Anfänger-Themen 9
G verstehe den unterschied zwischen equals und == nicht Java Basics - Anfänger-Themen 3
P Unterschied zwischen Interface und Vererbung und Sinn? Java Basics - Anfänger-Themen 5
M Unterschied zwischen J2SE, JSEE und JDK Java Basics - Anfänger-Themen 8
R Unterschied zwischen a++ und ++a Java Basics - Anfänger-Themen 9
G Unterschied zwischen homogenen und heterogenen Liste Java Basics - Anfänger-Themen 9
D Unterschied zwischen Ziffer und Zahl Java Basics - Anfänger-Themen 9
R Unterschied zwischen Integer und int Java Basics - Anfänger-Themen 6
B Was ist der Unterschied zwischen .java- und .class Dateien Java Basics - Anfänger-Themen 3
G Methoden wo ist der Unterschied?? Java Basics - Anfänger-Themen 11
D Unterschied charAt() substr() Java Basics - Anfänger-Themen 3
D Unterschied == und equals in Arrays Java Basics - Anfänger-Themen 2
H Unterschied Konstruktor und Klassenname x = new Klassenname; Java Basics - Anfänger-Themen 3
H .jar unterschied .class Java Basics - Anfänger-Themen 3
O Unterschied Arrays, Listen, Mengen Java Basics - Anfänger-Themen 24
K Unterschied for-Schleife Java Basics - Anfänger-Themen 14
M Schlüsselworte Unterschied: String.matches und Pattern.compile Java Basics - Anfänger-Themen 2
G Unterschied Instanz- Klassenvariable Java Basics - Anfänger-Themen 11
C Methoden Unterschied zwichen public int, public static int und public static void Java Basics - Anfänger-Themen 2
H Unterschied BufferedReader und BufferedInputStream Java Basics - Anfänger-Themen 4
N Unterschied von Post- und Preinkrement Java Basics - Anfänger-Themen 3
T Unterschied dynamischer und statischer Laufzeittyp Java Basics - Anfänger-Themen 1
D Unterschied Date - Calendar Java Basics - Anfänger-Themen 1
J Warum ist das ein Unterschied (Integer / int) Java Basics - Anfänger-Themen 2
S Erste Schritte Unterschied "if" und "else if" Java Basics - Anfänger-Themen 27
F Erste Schritte Unterschied: Array "leer" / "null" Java Basics - Anfänger-Themen 3
V Unterschied x++ und x=x++ Java Basics - Anfänger-Themen 6
O Unterschied Baum <-> Automat Java Basics - Anfänger-Themen 2
A Klassen Unterschied Warteschlange, Stapel und Liste Java Basics - Anfänger-Themen 3
M Wo liegt der Unterschied? Deklaration Klasse oder Konstruktur Java Basics - Anfänger-Themen 3
S Unterschied print() und println() Java Basics - Anfänger-Themen 3
S Unterschied .jar Datei ausführen und junit Testfall... Java Basics - Anfänger-Themen 3
S Datentypen Unterschied elementare und zusammengesetzte/strukturierte Datentypen Java Basics - Anfänger-Themen 5
S Unterschied Ausführung in IDE <-> Befehlszeile Java Basics - Anfänger-Themen 0
C Unterschied Objekte! Java Basics - Anfänger-Themen 13
A Unterschied Textdatei und Quelltextdatei Java Basics - Anfänger-Themen 5
R Erste Schritte Unterschied Array-Parameter zu Array als Parameter? Java Basics - Anfänger-Themen 7
V Unterschied Array & ArrayList Java Basics - Anfänger-Themen 13
D Geschwindigkeits unterschied bei import? Java Basics - Anfänger-Themen 13
L Unterschied zu C++ Java Basics - Anfänger-Themen 6
A Unterschied JDK SDK Java Basics - Anfänger-Themen 4
L Objekterzeugung Unterschied..? Java Basics - Anfänger-Themen 6
B Klassen Unterschied Konstruktoren. Java Basics - Anfänger-Themen 3
S Interface Unterschied: setContentPane() & getContentPane().add Java Basics - Anfänger-Themen 5
Helgon Unterschied runnable und normale jar Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Anzeige

Neue Themen


Oben