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

Alguém sabe dizer por que está retornando a frase de erro 3x?

Fiz o código e o while repete a mesma pergunta tres vezes se a pessoa digitar o numero errado. Até ai tudo bem. Quando esgota as tres tentativas, o else repete a mesma a frase do erro 3x. Alguem sabe dizer o por que?

Obrigada.

<meta charset="utf-8">

<script>

function mostra(frase){
document.write(frase);

}

var numeroEscolhido = 5;

var tentativas = 3;

var um = 1;

while(um <= 3){
  var numeroDigitado = parseInt(prompt("Digita um numero"));

  if (numeroEscolhido == numeroDigitado){

  mostra("Você acertou");

  break;

  } else {

    mostra("errou");
  }
um++;
}

</script>
3 respostas

Boa noite Maristela,

Sempre que o usuário erra é executado o código document.write(frase); Esse código vai escrever diretamente a frase no HTML, mas ela só vai se tornar visível quando o loop do while acabar.

Como o usuário errou três vezes quando o loop acabar vemos na tela errouerrouerrou.

Para o jogo ficar um pouco mais dinâmico você poderia trocar o document.write por outro alert, assim:

<meta charset="utf-8">

<script>

function mostra(frase){
alert(frase);

}

var numeroEscolhido = 5;

var tentativas = 3;

var um = 1;

while(um <= 3){
  var numeroDigitado = parseInt(prompt("Digita um numero"));

  if (numeroEscolhido == numeroDigitado){

  mostra("Você acertou");

  break;

  } else {

    mostra("errou");
  }
um++;
}

</script>

Abraços

Boa noite, Maristela! Como vai?

Esse comportamento acontece pq veja que dentro do seu while vc fez usou o if para verificar se o usuário acertou e logo em seguida utilizou o else para dizer o que deve ser feito caso não tenha acertado. Sendo assim, se o usuário errar três vezes, então três mensagens de erro serão exibidas! Para resolver esse problema, vc já deve ter percebido que o que está dentro da instrução else não pode ficar dentro do while!

Agora, certamente vc estará se perguntando:

Ora, se o que está dentro do else não pode ficar dentro do while, onde deve ficar?

Eis o seu desafio, minha aluna! Vc consegue resolvê-lo?

Tente resolver ele como exercício do curso! Caso não consiga, mande uma mensagem aqui que eu irei surgir para te tirar das trevas e te levar para a luz do conhecimento!

Até lá e bons estudos!

solução!

Conseguiiii!!! Tirei o else do while e fiz um IF para o "erro". Declarei uma "var achou= false" e coloquei a achou=true se tivesse certo.. e se tivesse errado achou=false (dentro do if do erro)

Mto obrigada pela dica, Gabriel!!!

Segue o código que eu usei:

<meta charset="utf-8">

<script>

function mostra(frase){
document.write(frase);

}

var numeroEscolhido = 5;

var tentativas = 3;

var um = 1;

var achou=false;
while(um <= 3){
  var numeroDigitado = parseInt(prompt("Digita um numero"));

  if (numeroEscolhido == numeroDigitado){

  mostra("Você acertou");
achou=true;
  break;

  }
um++;
}

if(achou==false){

    mostra("errou");
}

</script>

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software