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

E se o número gerado for zero?

Fiz esse exercício dado pelo professor e queria compartilhar uma dúvida (de muitas nesse código):

O que acontece se o número aleatório gerado for 0? Só existe um if para o caso da função sorteia() não sortear o 0. Não deveria haver um else após o if?

<script>

    function sorteia() {

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

    function sorteiaNumeros(quantidade) {

        var segredos = []; 

        var contador = 1; 

        while(contador <= 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); 
                    contador++; 
                }
            }    
        }

        return segredos;
    }

    var segredos = sorteiaNumeros(3); 
    console.log(segredos);

</script>
2 respostas
solução!

Se o numero gerado for zero ele tenta gerar novamente. O contador não é modificado (contador++) ele só é modificado se o número for diferente de zero (numeroAleatorio !== 0). O código está dentro do loop while, então enquanto ele não achar um número diferente de zero ele vai executar o sorteio novamente.

Obrigado, Hedcler!