Por qué no puede'hacer esto si intenta averiguar si un int está entre a números:
if(10 < x < 20)
En lugar de eso, tendrás que hacer
if(10<x && x<20)
que parece un poco de sobrecarga.
Es sólo la sintaxis. '<' es una operación binaria, y la mayoría de los lenguajes no la hacen transitiva. Podrían haberlo hecho como tú dices, pero entonces alguien se preguntaría por qué no se pueden hacer también otras operaciones en trinario. "if (12 < x != 5)"?
La sintaxis es siempre un compromiso entre complejidad, expresividad y legibilidad. Los diseñadores de lenguajes toman decisiones diferentes. Por ejemplo, SQL tiene "x ENTRE y Y z", donde x, y y z pueden ser individualmente o todas columnas, constantes o variables ligadas. Y me alegra utilizarlo en SQL, e igualmente me alegra no preocuparme de por qué no está en Java.
¿Porque esa sintaxis simplemente no está definida? Además, x < y
se evalúa como bool, así que ¿qué significa bool < int
? No es realmente una sobrecarga; además, podrías escribir un método de utilidad si realmente quieres - isBetween(10,x,20)
- yo no lo haría, pero bueno...
Porque el operador <
(y la mayoría de los demás) son operadores binarios (toman dos argumentos), y (verdadero verdadero)
no es una expresión booleana válida.
Los diseñadores del lenguaje Java podrían haber diseñado el lenguaje para permitir una sintaxis como la que usted prefiere, pero (supongo) decidieron que no merecía la pena aplicar reglas de análisis más complejas.