En Java sólo se
usan para identificar bucles y forzar sentencias “break” y “continue”.
En
general, dan pie a código difícilmente inteligible,
por lo que no se recomienda su uso
salvo en ocasiones muy justificadas.
Lo normal es que
una sentencia “break fuerce la salida del bucle más interno en
ejecucion. Si queremos salir de otro bucle más externo, lo marcaremos con una
etiqueta X: y saldremos de él escribiendo
break X;
Sirva el
siguiente método de ejemplo, aunque parece evidente que se podría programar con
ayuda de algún método auxiliar y, probablemente, quedaría más claro:
ejemplo break etiquetado |
public
class TrianguloPitagorico { public static void main(String[]
argumentos) { int a = -1, b = -1, c = -1; busqueda: for (int ijk = 1; ijk < 100;
ijk++) for (int i = 1; i < ijk; i++) for (int j = 1; i + j <
ijk; j++) for (int k = 1; i + j + k
< ijk; k++) if (i * i + j * j ==
k * k) { a = i; b = j; c =
k; break busqueda; } System.out.println("a= " +
a + "; b= " + b + "; c= " + c + ";"); } } |
Lo normal es que
una sentencia “continue” fuerce el salto a la siguiente vuelta del bucle más
interno en ejecucion. Si queremos retomar otro bucle más externo, lo marcaremos
con una etiqueta X: y regresaremos a él escribiendo
continue X;
Sirva el
siguiente método de ejemplo, aunque parece evidente que se podría programar con
ayuda de algún método auxiliar y, probablemente, quedaría más claro:
ejemplo continue etiquetado |
/** * Enuentra la primera línea tal que los datos de las columnas * están ordenados (valores estrictamente crecientes). * * @param matriz no ncesariamente rectangular. * @return fila con datos ordenados, o -1 si no hay ninguna. */ static int fileOrdenada(int[][] matriz) { filas: for (int fila = 0; fila <
matriz.length; fila++) { for (int columna = 1; columna < matriz[fila].length; columna++) { int v1 = matriz[fila][columna - 1]; int v2 = matriz[fila][columna];
if (v1 >= v2) continue filas; } return fila; } return -1; } |
Temas relacionados