4
respuestas

[Duda] Gasolina o Alcohol? con opciones.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CALCULO CONSUMO</title>
    <script>

        var tipo = prompt ("Teclea 1 para calcular con Gasolina y 2 para calcular con Alcohol");
        function gasolina(){
        var tanqueGas = prompt ("Introduce el valor de litros de tu tanque gasolina");
        var distanciaGas = prompt("Introduce la cantidad de Km recorridos");
        var eficGas = (distanciaGas / tanqueGas);
        document.write ("Tu auto recorre " + eficGas + " Km por litro de gasolina");
        }

        function alcohol(){
        var tanqueAlc = prompt ("Introduce el valor de litros de tu tanque de alcohol");
        var distanciaAlc = prompt("Introduce la cantidad de Km recorridos");
        var eficAlc = (distanciaAlc/ tanqueAlc);
        document.write ("Tu auto recorre " + eficAlc + " Km por litro de alcohol");
        }


        if (tipo == 1) {
            gasolina();

        } else {
            alcohol();
        }

    </script>
</head>
<body>
    <h3>¿Alcohol o gasolina?</h3>

</body>
</html>

Hice mi código de esa manera, pero me gustaría saber como puedo hacer para que si el usuario escribe cualquier otro número que no sea 1 o 2 aparezca un mensaje que diga "número inválido" o si pone una letra o frase diga "caracteres inválidos.

Saludos.

4 respuestas

Lo más sencillo sería agregar una estructura if - else if - else de la siguiente manera:

if (tipo == 1){
    gasolina();
}
else if (tipo == 0){
    alcohol();
}
else {
    document.write("Número invalido")
}

Incluso si quieres que su ejecución sea permanente hasta el cierre del programa (en caso de que se equivoque de número), puedes agregar un ciclo while (true):

while (true){
    if (tipo == 1){
        gasolina();
    }
    else if (tipo == 0){
        alcohol();
    }
    else {
        document.write("¡Número invalido! Ingresa uno correcto")
    }
}

Una solución sería cambiar tu sentencia if y utilizar el condicional else if, en este caso seria de la siguiente manera:

 if(tipo == 1){
    gasolina();
} else if(tipo == 2){
    alcohol();
} else{
    alert("Número y/o caracter invalido");
}

Muchas gracias por su pronta respuesta :). En base a sus aportes, los de otros compañeros y a otras cosas que investigué por cuenta propia, me quedó algo así:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CALCULO CONSUMO</title>
    <h3>¿Alcohol o gasolina?</h3>
    <script>

        var tipo = prompt ("Teclea 1 para calcular con Gasolina y 2 para calcular con Alcohol");
        function gasolina(){
             var tanqueGas = prompt ("Introduce el valor de litros de tu tanque gasolina");
            var distanciaGas = prompt("Introduce la cantidad de Km recorridos");
            var eficGas = (distanciaGas / tanqueGas);
            document.write ("Tu auto recorre " + eficGas.toFixed(2) + " Km por litro de gasolina");
        }

        function alcohol(){
            var tanqueAlc = prompt ("Introduce el valor de litros de tu tanque de alcohol");
            var distanciaAlc = prompt("Introduce la cantidad de Km recorridos");
            var eficAlc = (distanciaAlc/ tanqueAlc);
            document.write ("Tu auto recorre " + eficAlc.toFixed(2) + " Km por litro de alcohol");
        }


    if (tipo[0] == '1' || tipo[0] == '2') {
            if (tipo[0] == '1') {
            gasolina();
        } else {
            alcohol();
        }
    }else{
        document.write ("Caracter Invalido");

    }

    </script>
</head>
<body>

</body>
</html>

QUE BUEN PROGRAMA PARA REPASAR CONCEPTOS . GRACIAS POR COMPARTIR TU CÓDIGO