Tengo un problema con la lógica. Si el número es mayor que 0 y menor que 10 Y el número es 11 Y el número es 22 haz algo. (1, 2, 3, 4, 5, 6, 7, 8, 9, 11 o 22).
Y DE LO CONTRARIO, SI el número es mayor que 10 PERO NO es 11 o NO es 22 , haz otra cosa. (10, 12, 13....20, 21, 23, 24...)
Solo tengo que hacerlo con 11, pero no tengo ni idea de cómo insertar otra condición con 22.
if (n >= 0 && n < 10) || (n == 11 && n == 22) { do something } else if (n >= 10 && n != 11) && (n != 22) { do something else }Prueba (n >= 1 && n <= 9) || n == 11 || n == 22 que verificará si el número está entre 1 y 9 inclusive (1 a 9) O es 11 O es 22.
Luego, en su else if, simplemente busque >= 10 - los números menores que 1, por ejemplo, 0, tampoco activarán el else.
if ((n >=1 0 && n <= 9) || n == 11 || n == 22) { do something } else if (n >= 10) { do something else } Use >= y <= para aclarar qué valores está buscando; de lo contrario, se necesita un poco de carga mental adicional para darse cuenta de que n > 0 && n < 10 realmente significa valores del 1 al 9.
Además, es JavaScript y los números pueden ser integrales o de coma flotante, por lo que mayor que cero podría ser 0.1, etc.
Basado en su ejemplo de (1, 2, 3, 4, 5, 6, 7, 8, 9, 11 o 22), parece que esto es lo que está buscando.
if ((n > 0 && n < 10) || n == 11 || n == 22) { // do something } else if (n >= 10) { // do something else } Editar: se agregó else if (n >= 10) que pasé por alto
En su declaración if, usted dice:
n es mayor o igual a 0 Y n es menor que 10 O n es igual a 11 Y n es igual a 22
Lo que significa que el bloque if se ejecutará para números que están entre 0 y 9 (inclusive) O para los números 11 Y 22. Entonces, el número puede estar entre 0 y 9 o puede ser AMBOS 11 y 22, lo cual es imposible.
Mi opinión sobre la declaración if:
if (n >= 1 && n <= 9 || n == 11 || n == 22) { do something; }De esa manera, no se confundirá con la numeración inclusiva y exclusiva y se asegurará de que se permita 11 o 22.
El segundo bloque se ejecutará para números mayores o iguales a 10 Y no 11 Y no 22. Lo cual está bien.
else if (n >= 10 && n != 11 && n != 22) { do something else; } En esta respuesta, supongo que no desea omitir por completo el 10. Si lo hace, entonces en la segunda declaración, verificaría n > 10 .
Lógicamente, esto es sonido. Sin embargo, no creo que deba verificar 11 y 22 en el segundo, ya que el bloque if se ejecutará primero y si el número es 11 o 22, se ejecutará el primer bloque if. Entonces, el segundo no necesita tenerlos en cuenta.