while simple salir for ejemplos doble detener como ciclo bucle aprendizaje anidar anidado java loops syntax for-loop break

simple - salir del ciclo for en java



¿Cómo romper el bucle principal/externo en un bucle doble/anidado? (6)

Mejores y fáciles métodos para principiantes incluso

outerloop: for(int i=0; i<10; i++){ // here we can break Outer loop by break outerloop; innerloop: for(int i=0; i<10; i++){ // here we can break innerloop by break innerloop; } }

Esta pregunta ya tiene una respuesta aquí:

Si tengo un bucle en un bucle y una vez si la declaración está satisfecha quiero romper el bucle principal, ¿cómo se supone que voy a hacer eso?

Este es mi código:

for(int d = 0; d < amountOfNeighbors; d++){ for(int c = 0; c < myArray.size(); c++){ if(graph.isEdge(listOfNeighbors.get(d), c)){ if(keyFromValue(c).equals(goalWord)){ // once this is true I want to break main loop. System.out.println("We got to GOAL! It is "+ keyFromValue(c)); break; // this breaks second loop not main one. } } } }


Parece que para Java un break etiquetado parece ser el camino a seguir (basado en el consenso de las otras respuestas).

Pero para muchos (¿la mayoría?) Otros idiomas, o si desea evitar un flujo de control tipo goto , debe establecer un indicador:

bool breakMainLoop = false; for(){ for(){ if (some condition){ breakMainLoop = true; break; } } if (breakMainLoop) break; }



Puedes simplemente return el control desde esa función. O utilice el enfoque de break labels feas :) Si hay otras partes de código después de su declaración for, puede refactorizar los bucles en una función.

IMO el uso de descansos y continuar debe desalentarse en OOP, ya que afectan la legibilidad y el mantenimiento. Claro, hay casos en que son útiles, pero en general creo que debemos evitarlos, ya que fomentarán el uso de la programación de estilo goto.

Aparentemente las variaciones a estas preguntas se publican mucho, here Peter proporcionó algunos usos buenos y extraños usando etiquetas.


solo por diversión

for(int d = 0; d < amountOfNeighbors; d++){ for(int c = 0; c < myArray.size(); c++){ ... d=amountOfNeighbors; break; ... } // no code here }

comente en la break label : es un avance, puede romper cualquier afirmación y pasar a la siguiente:

foo: // label the next statement (the block) { code ... break foo; // goto [1] code ... } //[1]