es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El navegador omite el bucle do-while de JavaScript.

He estado intentando practicar JavaScript después de un tiempo sin usarlo. Estoy haciendo un ejercicio de votación simple donde los usuarios utilizan los números 1,2 o 3 en un window.prompt o un número diferente para finalizar la votación. El problema es que he utilizado un “do while” para crear el bucle y el navegador parece no leerlo. Se salta directamente al último “alert”. ¿Qué debo hacer? El código sigue a continuación:

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el código está atrapado en un bucle infinito debido a que la condición del bucle do-while no se está actualizando correctamente. En lugar de establecer end=false en cada sentencia if, deberías establecerlo en true cuando el usuario introduzca un número diferente para finalizar la votación.

    Así que cambia estas líneas:

    if (voto == 1) {
      votosFulano += 1;
      end = false;
    }
    
    if (voto == 2) {
      votosCicrano += 1;
      end = false;
    }
    
    if (voto == 3) {
      votosBeltrano += 1;
      end = false;
    }
    
    if (voto !== 1 && voto !== 2 && voto !== 3) {
      if (votosFulano > votosBeltrano && votosFulano > votosCicrano) {
        mostVoted = "Fulano";
      } else if (votosBeltrano > votosFulano && votosBeltrano > votosCicrano) {
        mostVoted = "Beltrano";
      } else if (votosCicrano > votosFulano && votosCicrano > votosBeltrano) {
        mostVoted = "Cicrano";
      }
    
      end = true;
    }
    

    por:

    if (voto == 1) {
      votosFulano += 1;
    }
    
    if (voto == 2) {
      votosCicrano += 1;
    }
    
    if (voto == 3) {
      votosBeltrano += 1;
    }
    
    if (voto != 1 && voto != 2 && voto != 3) {
      if (votosFulano > votosBeltrano && votosFulano > votosCicrano) {
        mostVoted = "Fulano";
      } else if (votosBeltrano > votosFulano && votosBeltrano > votosCicrano) {
        mostVoted = "Beltrano";
      } else if (votosCicrano > votosFulano && votosCicrano > votosBeltrano) {
        mostVoted = "Cicrano";
      }
    
      end = true;
    }
    

    Esto debería solucionar el bucle y permitir al usuario finalizar la votación con un número diferente.

Comments are closed.