Sentencias Etiquetadas
Parte de la sección Lógica y Flujo del Journey de Java de Coddy — lección 35 de 59.
Las sentencias de etiqueta en Java permiten marcar puntos específicos en tu código y controlar el flujo utilizando las sentencias break y continue con estas etiquetas. Las etiquetas son particularmente útiles al trabajar con bucles anidados.
Crea un bucle anidado con una etiqueta:
outer: for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
if(i * j == 4) {
break outer;
}
}
}Usa continue con una etiqueta:
firstLoop: for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
if(j == 1) {
continue firstLoop;
}
System.out.println(i + "," + j);
}
}Desafío
FácilCrea un método llamado findNumber que toma tres argumentos:
- Un arreglo 2D de enteros (
grid) - Un entero (
target) a buscar - Un booleano (
breakEarly) que determina si la búsqueda debe detenerse después de encontrar la primera ocurrencia El método debe usar un bucle etiquetado para buscar el número objetivo e imprimir cada posición donde se encuentra. Si breakEarly es true, debe detenerse después de encontrar la primera ocurrencia. Cada elemento encontrado debe imprimirse en el formato:Found at: rowIndex,colIndex
Hoja de referencia
Las declaraciones de etiquetas en Java te permiten marcar puntos específicos en tu código y controlar el flujo usando las sentencias break y continue con estas etiquetas.
Crea un bucle anidado con una etiqueta:
outer: for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
if(i * j == 4) {
break outer;
}
}
}Usa continue con una etiqueta:
firstLoop: for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
if(j == 1) {
continue firstLoop;
}
System.out.println(i + "," + j);
}
}Pruébalo tú mismo
import java.util.Scanner;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
public class Main {
public static void findNumber(int[][] grid, int target, boolean breakEarly) {
// Escribe tu código aquí
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Lee la cadena JSON que representa un arreglo 2D
String gridString = scanner.nextLine();
// Lee el número objetivo
int target = Integer.parseInt(scanner.nextLine());
// Lee la bandera breakEarly
boolean breakEarly = Boolean.parseBoolean(scanner.nextLine());
Type gridType = new TypeToken<int[][]>(){}.getType();
int[][] grid = new Gson().fromJson(gridString, gridType);
findNumber(grid, target, breakEarly);
}
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Arreglos Multidimensionales
Básicos de Arreglos 2DAccediendo a Elementos de Arreglos 2DBucles Anidados con Arreglos 2DResumen - Arreglos 2DSuma y Resta de MatricesArreglos IrregularesArreglos 3D y Más AlláPatrones Comunes de Arreglos 2DResumen - Todo Sobre Arreglos4HashSet Parte 1
¿Qué es un HashSet?Agregando un elementoEliminando un elementoComprobando si existe un elementoVacío y tamañoLimpiar y clonarResumen - HashSet7Manejo Básico de Errores
Básicos de Try-CatchBloque FinallyLanzamiento de ExcepcionesExcepciones Personalizadas2HashMap Parte 1
¿Qué es un HashMap?Declarar un HashMapAcceder a ValoresVerificar si una Clave ExisteModificar DiccionariosResumen - HashMap3HashMap Parte 2
Métodos de HashMapIterar con keySet()Iterar con entrySet()HashMap AnidadoResumen - Gestionar AlmacénResumen - Operaciones de HashMap6Flujo de Control Avanzado
Sentencias EtiquetadasExpresión SwitchCoincidencia de PatronesCláusulas de GuardiaResumen - Flujo de Control9Proyecto - Contador de Palabras Únicas
Entrada y Almacenamiento de TextoProcesamiento de Palabras