> Faqs > Solucionar fallo al comprobar si un número equivale a una cadena numérica

Solucionar fallo al comprobar si un número equivale a una cadena numérica

Hola, tengo la semana q viene un examen, y no consigo averiguar porqué no me funciona uno de los ejercicios que estoy haciendo (Estructura SWITCH, viene en el Manual Javascript 1 de www.desarrolloweb.com).

Me he decidido a preguntarles, ya que aún viniendo en el manual no he conseguido hacer que funcione. Aquí les mando el código (solo mando el script que falla, a ver que podéis hacer por mí, gracias)

 var x;

x = prompt("Introduce un numero: ", "");
switch (x) {
    case 1:
        document.write("Es Lunes")
        break
    case 2:
        document.write("Es Martes")
        break
    case 3:
        document.write("Es Miércoles")
        break
    case 4:
        document.write("Es Jueves")
        break
    case 5:
        document.write("Es viernes")
        break
    case 6:
    case 7:
        document.write("Es fin de semana")
        break
    default:
        document.write("Ese día no existe")
}  

Respuestas

Tu problema es que estás intentando evaluar si un número es igual a una cadena y como un número no es lo mismo que la cadena de caracteres con ese mismo valor numérico, no te da los resultados que esperas.

Es decir, por ejemplo la cadena "2" no es lo mismo que el número 2.

Tendrías dos soluciones. Primero es convertir la cadena a un número entero.

x = prompt("Introduce un numero: ", "");
x = parseInt(x);

Con parseInt() haces ese trabajo y ya tendrías un valor numérico para poder trabajar convenientemente.

Luego tienes otra opción, que es transformar tu switch para que te compare con cadenas.

var x;
x = prompt("Introduce un numero: ", "");
switch (x) {
    case "1":
        document.write("Es Lunes")
        break
    case "2":
        document.write("Es Martes")
        break
    case "3":
        document.write("Es Miércoles")
        break
    case "4":
        document.write("Es Jueves")
        break
    case "5":
        document.write("Es viernes")
        break
    case "6":
    case "7":
        document.write("Es fin de semana")
        break
    default:
        document.write("Ese día no existe")
}
Juanjo
243 8 18 5

SOLUCIONADO: la tercera línea es así: x=parseInt(prompt("Introduce un numero: ",""));