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

Bati cabeça mas naõ encontrei o erro :(

Oi mestres!

Tentei ao máximo não ter de recorrer ao fórum mas naõ deu, o meu "for" abaixo simplesmente não roda. Chequei nas aulas, até no w3schools...

O que tá de errado??

Obrigado!!

<meta charset="UTF-8">

<script>
    function mostraTexto (t) {
        document.write(t+"<br><br>")
    }

    var nroSorte = Math.round(Math.random()*10);
    console.log(nroSorte)

    let nomeUsuario = prompt("Qual o seu nome?");

    var nroAposta = parseInt(prompt("Ok, "+nomeUsuario+", digite um número de 1-10 para ser sorteado."));

    for (var tentativas = 1; tentativas > 3; tentativas++)    {
        if (nroAposta == nroSorte) {
            mostraTexto ("Parabéns! Você ganhou um joinha!");
            break;
        } else {
            nroAposta = parseInt(prompt("Errou!!!! Mas tente de novo, você tem mais "+(3-tentativas)+" tentativas."));
        }
    }

    if (tentativas == 3) {
        mostraTexto("Acabaram-se as tentativas. Recarregue a página!")
    }

</script>
2 respostas
solução!

Olá Filipe!

Pra fazer funcionar você precisa trocar o sinal de maior para menor.

De:

tentativas > 3

Para:

tentativas < 3

Quando você está usando o for, como o seu por exemplo, ele está dando a seguinte ordem:

var tentativas = 1 --> DECLARE uma variável chamada "tentativas" que inicie com o valor 1

tentativas > 3 --> ENQUANTO essa variável for maior que 3...

tentativas++ --> INCREMENTE +1 no seu valor

Observe que o ENQUANTO é o motivo do seu for não ter funcionado pois a variável não é maio que três (ela é igual a 1). Por isso ele nem entra no laço.

Já quando alteramos o simbolo estamos dizendo

tentativas < 3 --> ENQUANTO essa variável for menor que 3...

tentativas++ --> INCREMENTE +1 no seu valor

Como a variável é menor que 3 ele entra no laço e faz o incremento de forma correta até que ela seja igual a 3 - parando o laço.

Aaaaaaaaahhhhh, perfeito! Obrigado.

Não sei por que eu tinha entendido que o segundo campo do for era CONDIÇÃO para o loop parar, e não como é correto, que é um ENQUANTO para que o loop continue.

Agora está claro, até a próxima !