Olá João Vitor, tudo bem com você?
A questão é onde você colocou o if
para verificar onde iremos adicionar, vou simular a execução do seu programa para que a gente possa entender corretamente o erro, ok?
Vamos supor que sorteia()
deu 0, então:
while(numero <= quantidade){
var numeroAleatorio = sorteia();
var achou = false;
Aqui teremos que numeroAleatorio = 0
e achou = false
, então iremos para a verificação do if
:
if (numeroAleatorio !== 0) {
Como isso é falso, não iremos entrar, e ai vem o problema, qual a próxima instrução depois do if ?
if (achou == false){
segredos.push(numeroAleatorio);
numero++
}
Opa, achou
começou como falso, e como não entramos no if
ele se manteve, então iremos adicionar o nosso numeroAleatorio
, que no caso é o 0 :)
Para corrigir esse problema é bem simples, a verificação de se encontrou o número tem que estar dentro do bloco onde o numeroAleatorio
é != 0
, no caso:
if (numeroAleatorio !== 0) {
for(var posicao = 0; posicao < segredos.length; posicao++) {
if(segredos[posicao] == numeroAleatorio){
achou = true;
break;
}
}
if (achou == false){
segredos.push(numeroAleatorio);
numero++
}
}
Dessa forma se sortearmos 0, não iremos entrar dentro do if
e simplesmente sortear um novo valor :)
Conseguiu Compreender? Qualquer coisa estou à disposição :)
Abraços e Bons Estudos!