2010-11-11 15 views
41

¿Qué pasa si tenemos una sentencia if dentro de un bucle for, tendría que detener el bucle o la condición if ...The Command .. break; en Java, ¿y si?

Ejemplo:

for (int i = 0; i < array.length; i++) { 
    if (condition) { 
     statement; 
     break; 
    } 
} 

Respuesta

82

La instrucción break no tiene ningún efecto en las declaraciones if. Solo funciona en switch, for, while y do bucles. Entonces, en su ejemplo, la ruptura terminaría el ciclo for.

Consulte this section y this section del tutorial de Java.

+5

Tu respuesta fue la más completa, así que acabo de agregar un par de enlaces a las secciones relevantes del tutorial de Java en lugar de publicar una nueva respuesta. Espero que esté bien. – mikej

+0

@mikej ¡Está bien, gracias por mejorar mi respuesta! – brain

1

Se detendrá el bucle.

1

El comando break dentro de la instrucción IF saldrá del ciclo FOR.

0

Una vez que se cumple la condición y la sentencia se ha ejecutado correctamente (supongamos que no se lanza ninguna excepción), el break sale del ciclo.

3

a break instrucción (y su compañero, 'continuar', también) funciona en un bucle circundante. Una declaración if-no es un bucle. Para responder a su pregunta, el break en su ejemplo de código saltará del for -loop.

7

Puede salir de simplemente 'if' también, si lo desea, puede tener sentido en un escenario de este tipo:

for(int i = 0; i<array.length; i++) 
{ 
CHECK: 
    if(condition) 
    { 
    statement; 
    if (another_condition) break CHECK; 
    another_statement; 
    if (yet_another_condition) break CHECK; 
    another_statement; 
    } 
} 

también se puede salir de la etiqueta {sentencia}:

for(int i = 0; i<array.length; i++) 
{ 
CHECK:  
    { 
    statement; 
    if (another_condition) break CHECK; 
    another_statement; 
    if (yet_another_condition) break CHECK; 
    another_statement; 
    } 
} 
+0

Los controles de fallas no son una excelente manera de tratar con los programadores de chupar rueda. – CubeJockey

+0

No responde la pregunta ,: la segunda afirmación es incorrecta; y el segundo ejemplo no compila – EJP

3

La respuesta seleccionada es casi right. si la instrucción break se mezcla por label, entonces puede usarse en la declaración if sin necesidad de estar en un bucle. El siguiente código es completamente válido, se compila y se ejecuta.

public class Test { 
    public static void main(String[] args) { 
     int i=0; 
     label:if(i>2){ 
      break label; 
     }    
    } 
} 

Sin embargo, si eliminamos la etiqueta, no compila.

+0

Esto no es correcto. La etiqueta tiene que etiquetar un bucle. – EJP

+1

@EJP, adelante, ejecútelo en su IDE. compila y ejecuta :). – Reza