RSS

Control del Flujo: Bucles II (break, continue, etiquetas)

08 Dic

Una vez que hemos visto los bucles en Java vamos a ver cómo les afectan las siguientes sentencias: break y continue.

Escribimos un bucle anidado y vemos la diferencia entre break y continue:

public class BucleConBreak{
    public static void main(String[] args){
        for (int i = 0; i< 6; i++){
            for (int j=0; j<5; j++){
                if (j==3){
                    break;
                }
                else{
                    System.out.println("iteracion [i,j]: " + i + ", " + j);
                }
            }
        }
    }
}

El resultado es:

La sentencia break hace que se salga completamente del bucle más interno y proseguimos con la siguiente iteración del bucle externo.

El mismo código pero con continue:

public class BucleConContinue{
     public static void main(String[] args){
         for (int i = 0; i< 6; i++){
             for (int j=0; j<5; j++){
                 if (j==3){
                     continue;
                 }
                 else{
                      System.out.println("iteracion [i,j]: " + i + ", " + j);
                 }
             }
         }
      }
 }

Devuelve:

La sentencia continue hace que pasemos a la siguiente iteración del bucle más interno.

Etiquetas

Es común utilizar las etiquetas con bucles for o while y en conjunción con las sentencias break y continue.

Una etiqueta se coloca antes de la sentencia a etiquetar seguida de ‘:’
Son útiles cuando tenemos bucles anidados y queremos especificar en cuál de ellos queremos hacer un break o continue.

En el siguiente ejemplo tenemos un ejemplo de break etiquetado:
El funcionamiento normal del break sería salir del bucle más interno, el while en este caso.
Sin embargo, el break etiquetado hace que rompa el bucle etiquetado, es decir el for.

public class BucleBreakLabeled{
    public static void main (String[] args){
        boolean esVerdadero = true;
        externo: //etiqueta la siguiente sentencia, es decir el for.
        for (int i = 0; i<5; i++){
            while (esVerdadero){
                System.out.println("Hola!");
                break externo; //break con etiqueta, hace que rompa la sentencia de la etiqueta, el for.
            }
            System.out.println("Despues del while!");
        }
        System.out.println("Despues del for!");
    }
}

Devuelve:

Las sentencias break y continue con etiquetas deben estar dentro de un bucle con la misma etiqueta, si no dará error de compilación.

Anuncios
 
5 comentarios

Publicado por en 8 diciembre, 2011 en Estudio, Tema 5

 

Etiquetas: , , , , , ,

5 Respuestas a “Control del Flujo: Bucles II (break, continue, etiquetas)

  1. Jesus

    22 abril, 2014 at 2:32 am

    Saludos desde México D.F
    Buen blog y de mucha ayuda!!

     
  2. Héctor

    5 abril, 2014 at 5:33 am

    Me gusta mucho tu blog, y me ayuda bastante, muchas gracias. saludos desde México

     
  3. Ing. Miguel A. Morales

    16 diciembre, 2013 at 10:40 pm

    Muchas felicidades por tu blog Virginia, desde México, D.F.

     
  4. Virginia Lopez

    10 diciembre, 2011 at 7:16 pm

    Hola Felipe!!
    Están más bien como un ejemplo para ver cómo sería el funcionamiento. Yo como tú tampoco le veo mucho sentido. Es más yo veo eso de las etiquetas y me recuerda a lenguajes más primitivos con las sentencias goto y todo eso. Yo no las utilizaría en la práctica.

    Gracias por la visita y por el comentario!

     
  5. Felipe

    10 diciembre, 2011 at 5:44 pm

    Hola Virginia, primero quería felicitarte por tu blog.
    Mi comentario, en realidad una opinión, es con respecto a estos break dentro de un bucle for. Si bien son utilizados en algunos lugares no encuentro su elegancia en el código, es como si el “for” fuese utilizado para algo que en realidad no fue creado. Quizás si quieres hacer recorrido hasta cumplir con cierta condición, mejor utilizar “while” / “do-while” y un “for” lo dejamos para hacer un recorrido de elementos finitos (que conocemos su tamaño).
    Bueno, en realidad es mi opinión solamente.

    Saludos.

     

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: