Cargando...

for-each en Java

Guarda tres números enteros en un array llamado slots: 2, luego 4, luego 6. Escribe for (int n : slots) e imprime n dentro de las llaves. La pantalla debe mostrar tres líneas: 2, luego 4, luego 6. En esta página no escribes un contador de índice. Cada paso entrega al nombre n el siguiente valor del array. Ese recorrido es lo que enseña esta página.

Un nombre para cada valor del array

Crea un archivo de programa pequeño llamado Pack.java. El public class de la primera línea debe coincidir con el nombre del archivo: public class Pack. No dejes un nombre de clase antiguo Skip o Pulse en este archivo; el compilador espera que el nombre de la clase y el del archivo coincidan.
Dentro de main guarda primero el array:
int[] slots = {2, 4, 6};
Esa línea no imprime nada. Solo guarda tres números enteros bajo el nombre slots. Luego el bucle for-each:
for (int n : slots) {
System.out.println(n);
}
La palabra for sigue en minúsculas. Dentro de los paréntesis hay tres piezas con dos puntos en el medio: el tipo int, el nombre n para un elemento, luego dos puntos, luego el nombre del array slots. Esos dos puntos no son una etiqueta case ni un separador de rutas. Marcan «cada valor de slots entra en n.» Las llaves guardan el cuerpo. System.out.println(n); escribe el valor actual sin comillas alrededor de n. Guarda el archivo antes de compilar.

Programa que imprime 2 luego 4 luego 6

Esta es la versión que compilas primero.

recorrido del array int

java
public class Pack {
    public static void main(String[] args) {
        int[] slots = {2, 4, 6};
        for (int n : slots) {
            System.out.println(n);
        }
    }
}

Desde la carpeta que guarda Pack.java escribe javac Pack.java. Cuando coinciden paréntesis, llaves y dos puntos, javac no escribe ninguna línea propia. Luego escribe java Pack — no java Pack.java. Quita la terminación .java del segundo comando. Los mismos dos comandos funcionan en Windows y en macOS; esta página no necesita otra ortografía de shell para ninguno de los dos sistemas. El programa debe imprimir tres líneas y parar: 2, luego 4, luego 6. No te pide que escribas. Si la terminal se queda esperando teclado, todavía hay una llamada nextLine de un ejercicio anterior en el archivo. Borra esa llamada y conserva el array más el for-each de arriba. Una línea incorrecta en pantalla no significa que necesites instalar de nuevo el JDK.

Recorre una ejecución completa en orden. slots guarda 2, luego 4, luego 6. El primer paso pone n en 2 y println escribe 2. El segundo paso pone n en 4 y escribe 4. El tercer paso pone n en 6 y escribe 6. Luego no hay más valores, así que el bucle termina. En esta página no escribiste int i = 0 ni i < slots.length. La cabecera for-each pide a Java visitar cada valor guardado una vez. El nombre n es nuevo en cada paso solo en el sentido de que guarda el siguiente elemento; igual lo declaras una sola vez en la cabecera como int n.

Recorre un array String del mismo modo

Cambia el array guardado y el tipo del elemento para que cada valor sea una palabra corta:
String[] tags = {"red", "blue"};
for (String t : tags) {
System.out.println(t);
}
Ahora la pantalla debe mostrar dos líneas: red, luego blue. Los dos puntos siguen entre el tipo del elemento y el nombre del array. El cuerpo sigue imprimiendo el nombre que guarda un elemento.

recorrido del array String

java
public class Pack {
    public static void main(String[] args) {
        String[] tags = {"red", "blue"};
        for (String t : tags) {
            System.out.println(t);
        }
    }
}

Compila y ejecuta otra vez: javac Pack.java, luego java Pack. Debes ver dos líneas. Reemplazaste el array int por un array String y alineaste el tipo del nombre del elemento con String. Después de ver red y blue, puedes volver a poner la demo int. Ambas versiones son Java válido. Enseñan la misma forma for-each con distintos tipos de elemento.

Lee otra vez la ejecución String. tags guarda red, luego blue. El primer paso pone t en red y lo imprime. El segundo paso pone t en blue y lo imprime. Luego el bucle termina. Las comillas en el literal del array marcan el texto guardado en el array. println(t) sin comillas extra alrededor de t escribe esas letras guardadas en la pantalla.

Reglas que mantienen for-each claro

Los paréntesis deben guardar tipo, nombre, dos puntos y nombre del array en ese orden. Escribir for (int n slots) sin los dos puntos hace que javac falle. El tipo del elemento debe encajar con el array: int con un array int, String con un array String. Poner int n junto a un String[] no es la forma que compila esta lección. Las llaves siguen guardando el cuerpo cuando el cuerpo tiene una o más líneas.

for-each no es el for contado de la página Beat, ni break de la página Skip. El for contado escribía inicio, prueba y paso con un contador. for-each recorre valores ya guardados en un array. break termina un bucle antes; la primera demo de esta página imprime cada valor. No dejes una demo break de Skip ni un while de Pulse en el mismo main y te preguntes por qué la pantalla muestra 1 y 2 en lugar de 2, 4, 6. El main de esta sesión debe guardar solo el array y el for-each.

Una confusión común es imprimir la sintaxis misma: System.out.println("for (int n : slots)");. Eso escribe los caracteres de la cabecera. No recorre el array. Otra confusión es System.out.println("n"); con comillas, que imprime la letra n en cada paso en lugar de 2, 4 y 6. Conserva println(n) sin comillas cuando quieras el valor del elemento en la pantalla.

Si el array no tiene elementos — por ejemplo int[] slots = {}; — el cuerpo nunca corre y la pantalla queda en blanco. Eso sigue siendo un for-each válido; las demos de esta lección guardan al menos dos valores para que veas las líneas impresas. Cuando más adelante necesites un número de índice en la pantalla, vuelve el for contado; for-each sirve para visitar valores sin gestionar ese índice tú mismo. Cambiar un valor dentro del bucle con n = 9; no reescribe la casilla del array en esta forma principiante — trata n como el valor que lees para imprimir, no como una herramienta para editar slots.

Lo que puedes hacer ahora

Puedes guardar un array, escribir for (Type name : arrayName) e imprimir cada valor una vez. Alinear el tipo del elemento con el array mantiene el bucle compilable. La página siguiente es methods, donde agrupas líneas bajo un nombre que puedes llamar desde main.

🧠 Pon a Prueba tu Conocimiento

Listo para Empezar

Pon a Prueba tu Conocimiento

Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema

❓
6
Preguntas
🎯
70%
Para Aprobar
♾️
∞
Tiempo
🔄
∞
Intentos

📝 Instrucciones

  • Lee cada pregunta cuidadosamente
  • Selecciona la mejor respuesta para cada pregunta
  • Puedes repetir el quiz tantas veces como quieras
  • Tu progreso se mostrará en la parte superior