switch en Java
Guarda el número entero 2 bajo el nombre choice. Construye un switch que liste case 1, case 2 y case 3, cada uno con su propio println, más un default. Cuando compiles y ejecutes, la pantalla debe mostrar mid — una línea — porque case 2 coincide. Eso enseña esta página: un valor, varias etiquetas fijas, un camino elegido.
Un valor, varias etiquetas fijas
Crea un archivo de programa pequeño llamado Dial.java. El public class de la primera línea debe coincidir con el nombre del archivo: public class Dial. No dejes un nombre de clase antiguo Gate o Mint en este archivo; el compilador espera que el nombre de la clase y el del archivo coincidan.
Dentro de main, guarda un número entero antes del switch:
int choice = 2;
Esa línea no imprime nada. Solo da al nombre choice el valor 2. choice empieza con una c minúscula. No hay comillas alrededor de 2. El punto y coma termina la línea de guardado. Después viene el switch mismo:
switch (choice) {
case 1:
System.out.println("low");
break;
case 2:
System.out.println("mid");
break;
case 3:
System.out.println("high");
break;
default:
System.out.println("none");
break;
}
La palabra switch va en minúsculas. Dentro de los paréntesis se sienta el nombre choice — el valor que Java compara con cada etiqueta case. Cada línea case termina con dos puntos, no con punto y coma. Bajo case 2 se sienta System.out.println("mid"); luego la palabra break y un punto y coma. Cuando choice guarda 2, Java entra en case 2, imprime mid, llega a break y sale de todo el switch. case 3 y default no se ejecutan en este turno. Guarda el archivo antes de compilar.
Programa que imprime mid
Esta es la versión que compilas primero. choice es 2, así que la etiqueta que coincide es case 2.
public class Dial {
public static void main(String[] args) {
int choice = 2;
switch (choice) {
case 1:
System.out.println("low");
break;
case 2:
System.out.println("mid");
break;
case 3:
System.out.println("high");
break;
default:
System.out.println("none");
break;
}
}
}
Desde la carpeta que contiene Dial.java, escribe javac Dial.java. Cuando las llaves, los paréntesis y los dos puntos coinciden, javac no escribe ninguna línea propia. Luego escribe java Dial — no java Dial.java. Quita la terminación .java del segundo comando. Los mismos dos comandos funcionan en Windows y en macOS; esta página no depende de otra ortografía de shell para ninguno de los dos sistemas. El programa debe imprimir mid y terminar. No debe pedirte que escribas. Si la terminal se queda esperando entrada del teclado, todavía hay una llamada nextLine de un ejercicio anterior en el archivo. Borra esa llamada y deja el int más el switch de arriba. No necesitas una instalación nueva del JDK por una línea incorrecta en pantalla.
¿Por qué mid y no low o high? Porque el valor entre paréntesis era 2, y case 2 es la etiqueta que coincide. Java no imprime el dígito 2 en esta ejecución a menos que escribas un println para ese dígito. Imprime lo que println ejecuta bajo el case que coincidió. Los paréntesis sostienen el valor que se compara. Cada etiqueta case aquí es un número entero fijo. break termina el switch para que los cases siguientes se queden en silencio. default espera valores que no coinciden con ningún case — permanece sin usarse mientras choice es 2.
Cuando ningún case coincide
Cambia solo el valor guardado:
int choice = 9;
Deja la estructura del switch como está. Ahora no coincide ninguno de case 1, case 2 o case 3. Java pasa a default y ejecuta System.out.println("none");. La pantalla debe mostrar none, una línea.
public class Dial {
public static void main(String[] args) {
int choice = 9;
switch (choice) {
case 1:
System.out.println("low");
break;
case 2:
System.out.println("mid");
break;
case 3:
System.out.println("high");
break;
default:
System.out.println("none");
break;
}
}
}
Compila y ejecuta otra vez: javac Dial.java, luego java Dial. Debes ver none. No reescribiste las líneas case — solo cambió el valor bajo choice. Después de ver none, puedes volver a poner int choice = 2; para regresar al primer demo. Ambas versiones son Java válido. Enseñan la misma forma de switch con un case que coincide y con default.
Lee la ejecución de default una vez más en orden. choice guarda 9. Empieza switch (choice). case 1 no coincide. case 2 no coincide. case 3 no coincide. El control continúa en default. Se ejecuta println("none"). Una línea en la pantalla. El dígito 9 mismo no aparece a menos que lo imprimas a propósito.
break detiene los cases siguientes
break no es decoración. Sin él, Java puede seguir ejecutando las líneas del case siguiente después de una coincidencia. Esa caída hacia abajo sorprende a los principiantes. Aquí hay un demo corto que olvida break a propósito después de case 2 — pruébalo en un archivo aparte, o léelo con cuidado antes de compilarlo como tu archivo principal:
public class Dial {
public static void main(String[] args) {
int choice = 2;
switch (choice) {
case 1:
System.out.println("low");
break;
case 2:
System.out.println("mid");
case 3:
System.out.println("high");
break;
default:
System.out.println("none");
break;
}
}
}
Con choice igual a 2 y sin break bajo case 2, la pantalla puede mostrar mid en una línea y high en la siguiente. case 2 coincidió, imprimió mid, luego cayó en case 3 e imprimió high. Los primeros demos de la lección mantienen break bajo cada case para que cada camino escriba exactamente una línea. Vuelve a poner break antes de tratar Dial.java otra vez como el archivo de lección que conservas.
Reglas que mantienen claras las etiquetas
Los paréntesis alrededor del valor del switch son obligatorios. Escribir switch choice { … } sin paréntesis hace que javac falle. Cada etiqueta case en esta página es una constante de número entero: case 1:, case 2:, case 3:. Dos puntos siguen a la etiqueta. Escribir case 2; con punto y coma en lugar de dos puntos no es la forma que esta lección compila. default no tiene valor después — solo default: y luego las líneas de «nada coincidió».
switch no es la misma herramienta que if. if (ready) hace una pregunta de verdadero o falso. switch (choice) compara un valor con una lista de etiquetas fijas. No escribas switch (ready) con un boolean y esperes la misma forma de lección que Gate.java. Mantén los demos de esta página en un int llamado choice y etiquetas case de números enteros. Comparaciones como if (score > 10) siguen perteneciendo a if cuando necesitas un rango; switch brilla cuando los valores son discretos y conocidos de antemano.
Una confusión común es imprimir la sintaxis misma: System.out.println("switch (choice)");. Eso escribe los caracteres switch (choice). No elige un case. Otra confusión es dejar un demo if / else de Gate en el mismo main y preguntarse por qué la pantalla muestra pass en lugar de mid. El main de esta sesión debe contener solo el int y el switch.
📊 choice y la pantalla
| choice | Pantalla |
|---|---|
| 1 | low |
| 2 | mid |
| 3 | high |
| 9 | none |
Usa la tabla como comprobación después de una ejecución, no en lugar de una. choice 2 con el primer demo imprime mid. choice 9 con el segundo demo imprime none. choice 1 imprime low. choice 3 imprime high. Si mid y high aparecen ambos para choice 2, falta un break bajo case 2 — arregla los breaks en lugar de reinstalar Java.
Qué puedes hacer ahora
Puedes guardar un número entero, ponerlo en switch (…) y dar a cada valor fijo su propio case con un println y un break. Cuando un case coincide, se ejecuta esa línea; cuando nada coincide, se ejecuta default. La página siguiente es for, donde el mismo bloque de líneas puede ejecutarse una y otra vez mientras cambia un contador.
🧠 Pon a Prueba tu Conocimiento
Pon a Prueba tu Conocimiento
Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema
📝 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