Anidamiento de ternarios
Encadene decisiones con cuidado
Anidamiento de ternarios es una lección gratuita de Java Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Java Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Java Academy incluye 4 lecciones en total.
¿Qué es un ternario anidado?
Un ternario anidado coloca otro ternario dentro de una de sus ramas.
Esto permite elegir entre tres o más resultados en lugar de solo dos.
El resultado es una cadena de condiciones que se evalúan de izquierda a derecha.
int score = 75;
String grade = score >= 90 ? "A" : score >= 80 ? "B" : "C";Cómo se agrupa
El operador ternario es asociativo por la derecha. Esto significa que la rama falsa engloba el resto de la cadena.
Por tanto, a ? x : b ? y : z se interpreta como a ? x : (b ? y : z).
Cada : da paso a la condición siguiente.
// reads as: a ? x : (b ? y : z)
String r = false ? "x" : true ? "y" : "z"; // r = "y"Una elección entre tres opciones
Aquí, un número se clasifica como negativo, cero o positivo.
La primera condición comprueba si es negativo; su rama falsa comprueba si es cero o positivo.
public class Main {
public static void main(String[] args) {
int n = 0;
String sign = n < 0 ? "negative" : n == 0 ? "zero" : "positive";
System.out.println(sign);
}
}Ejemplo de calificación
Un uso clásico es asignar una calificación con letra a una puntuación.
Cada condición se comprueba en orden hasta que una resulta verdadera, y se devuelve la letra correspondiente.
public class Main {
public static void main(String[] args) {
int score = 83;
String grade = score >= 90 ? "A"
: score >= 80 ? "B"
: score >= 70 ? "C" : "F";
System.out.println(grade);
}
}El orden es importante
Las condiciones se prueban de arriba abajo, así que debe colocar primero el rango más específico o más alto.
Si comprobara score >= 70 antes que score >= 90, una puntuación de 95 se detendría erróneamente en la primera coincidencia.
// wrong order: 95 would match >= 70 first
int score = 95;
String g = score >= 70 ? "C" : score >= 90 ? "A" : "F"; // g = "C"!Añadir paréntesis para mayor claridad
Java no exige paréntesis, pero estos hacen que el anidamiento resulte evidente para quien lee el código.
Rodear cada ternario interno con paréntesis muestra exactamente cómo se emparejan las ramas.
int n = 5;
String s = n < 0 ? "neg" : (n == 0 ? "zero" : "pos");Dar formato en varias líneas
Las cadenas largas se leen mejor cuando cada condición ocupa su propia línea.
Alinee los signos ? y : para que la estructura parezca una escalera.
public class Main {
public static void main(String[] args) {
int temp = 22;
String label = temp >= 30 ? "hot"
: temp >= 20 ? "warm"
: temp >= 10 ? "cool"
: "cold";
System.out.println(label);
}
}Anidamiento en la rama verdadera
También puede anidar un ternario dentro de la rama verdadera, aunque es menos habitual y más difícil de leer.
Cuando lo haga, se recomienda encarecidamente utilizar paréntesis para evitar confusiones.
boolean a = true, b = false;
String r = a ? (b ? "both" : "only a") : "neither";Devolver un ternario anidado
Un método puede devolver un resultado con varias opciones mediante un único ternario anidado.
Esto sigue siendo legible para tres o cuatro casos, pero se vuelve confuso con más casos.
public class Main {
static String size(int len) {
return len < 5 ? "short" : len < 10 ? "medium" : "long";
}
public static void main(String[] args) {
System.out.println(size(7));
}
}Sepa cuándo detenerse
Normalmente, dos niveles de anidamiento están bien. Tres o más suelen resultar difíciles de seguir.
Cuando una cadena se alarga, una estructura if/else if o un switch es más clara y fácil de depurar.
Seguir una cadena
Recorra esta cadena manualmente: con day = 6, la primera condición es falsa y la segunda es verdadera.
Por tanto, el resultado es "Saturday" sin comprobar el resto.
public class Main {
public static void main(String[] args) {
int day = 6;
String name = day == 7 ? "Sunday"
: day == 6 ? "Saturday" : "Weekday";
System.out.println(name);
}
}Comprobación rápida
Compruebe cómo se agrupan los ternarios anidados.
Repaso
Los ternarios anidados encadenan condiciones para elegir entre tres o más valores.
Son asociativos por la derecha, por lo que la rama falsa absorbe el resto; ordene las condiciones cuidadosamente.
Añada paréntesis y saltos de línea para mayor claridad, y cambie a if/else cuando las cadenas se alarguen.
Preguntas frecuentes
¿La lección «Anidamiento de ternarios» es gratis?
Sí — el texto completo de «Anidamiento de ternarios» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Java Academy, actualiza a CoddyKit PRO. El curso de Java Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Anidamiento de ternarios»?
Encadene decisiones con cuidado Practicas Java Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Java Academy?
No se requiere experiencia previa. Java Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Anidamiento de ternarios»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Java Academy?
Sí. Cada lección de Java Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- El operador ternario
- Anidamiento de ternarios
- Ternario frente a if/else
- Problemas de legibilidad