Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Problema com looping infinito

<script>

    function sorteia(){

        Math.round(Math.random()*10);

    }

    function sorteiaNumeros(quantidade){

        var segredos = [];
        var numero = 1;

            while(numero <= quantidade){

                var numeroAleatorio = sorteia();

                if(numeroAleatorio !== 0){

                    var achou = false;

                    for(var posicao = 0; posicao < segredos.length; posicao++){

                        if(segredos[posicao] == numeroAleatorio){
                            achou = true;
                            break;
                        }
                    }

                    if(achou == false){

                        segredos.push(numeroAleatorio);
                        numero++;
                    }
                }
            }

        return segredos;
    }

    var segredos = sorteiaNumeros(5);

    console.log(segredos);

    var input = document.querySelector("input");
    input.focus();

    function verifica() {

        var achou = false;

        for(var posicao = 0; posicao < segredos.length; posicao++){

            if(input.value == segredos[posicao]){

                alert("Você acertou!");
                achou = true;
                break;

            }
        }

        if(achou == false){

            alert("Você errou!");

        }

        input.value = "";
        input.focus();

    }

    var button = document.querySelector("button");
    button.onclick = verifica;    

</script>
4 respostas

Ele fica no loop por causa do teu while, mas pra que serve este codigo ? oque ele deveria fazer ?

Olá Cristian,

O Maurício tem razão, dentro do seu laço condicional while não há incremento nem na variável numero nem na quantidade.

Sortear números aleatórios

solução!

O problema está exatamente aqui cara, por que se o seu numero não entra nessa condição if ele nunca vai ter minar pq o numero++ esta dentro dela. Não sei se é necessário ela dentro do if ou se colocou por engano porém, se vc colocar o numero++ fora do if o while vai se encerrar e parar de fazer o looping infinito.

            if(achou == false){

                        segredos.push(numeroAleatorio);
                        numero++;
                    }
                }

            }

Solução testa ai e diz se resolveu.

         if(achou == false){

                        segredos.push(numeroAleatorio);
                        numero++;
                    }
                }
    numero++
            }