2
respostas

Contador de Erros não exibe alerta desejado.

Crei o seguinte código, simulando uma tela de login, confome ensinado na aula 07, atividade 07. Porém tentei fazer uma espécie de contador de erros, para mostrar quantas tentativas restariam para o usuário.

O código ficou assim:

<meta charset="UTF-8">

<script>

    var loginCadastrado = "neto";
    var senhaCadastrada = "neto321";

    var maximoTentativas = 3;
    var tentativaAtual = 1;

    while(tentativaAtual <= maximoTentativas) {

        var loginInformado = prompt("Informe seu login");
        var senhaInformada = prompt("Informe sua senha");

        if( loginCadastrado == loginInformado && senhaCadastrada == senhaInformada ) {

            alert("Bem-vindo ao sistema, " + loginInformado);
            tentativaAtual = maximoTentativas; 

        } else {

            alert("Login inválido. Você tem + " + (3 - tentativaAtual) + " chances.");
        }

        tentativaAtual++;

        if(tentativaAtual > 4) {

            alert("Número de tentativas excedidas, contate o administrador.");
        }
    }

</script>

Acontece que se eu erro o login ou senha em mais de 3 tentativas, o alerta que criei para exibir: "Número de tentativas excedidas, contate o administrador.", não é exibido.

Como alterar esse código de forma a exibir essa última mensagem após 3 tentativas erradas?

2 respostas

Acontece que a tentativaAtual nunca está chegando no valor 4, por isso não entra no if para mostrar a mensagem. Você colocou a condição dentro do while, então no máximo, a tentativaAtual vai ser 3, e vai sair do while. Pra funcionar, tira o if de dentro do while, deixe ele na ultima linha do programa, e também verifique se a tentativaAtual é maior ou igual a 4, assim:

if(tentativaAtual >= 4) {

Espero ter ajudado. Valeu.

Opa Matheus, ajudou sim, porém não resolveu 100% do problema.

Eu havia tentando assim também, e o que acontece é que quando eu coloco o login e senha corretos no prompt, ele conclui exibindo a mensagem alert("Número de tentativas excedidas, contate o administrador.");} sempre. Como ficou fora do bloco While, ela sempre irá ser exibida mesmo estando tudo certo.

Pedi ajuda pra um amigo programador e consegui editar o código pra funcionalidade que eu desejava. Vou compartilhar aqui pro caso de alguém ter tido uma ideia similar.

<meta charset="UTF-8">

<script>

    var loginCadastrado = "neto";
    var senhaCadastrada = "neto321";

    var maximoTentativas = 3;
    var tentativaAtual = 1;
    var sucessLogin = false;

    while(tentativaAtual <= maximoTentativas) {

        var loginInformado = prompt("Informe seu login");
        var senhaInformada = prompt("Informe sua senha");

        if( loginCadastrado == loginInformado && senhaCadastrada == senhaInformada ) {

            alert("Bem-vindo ao sistema, " + loginInformado);
            tentativaAtual = maximoTentativas; 
            sucessLogin = true;

        } else {

            alert("Login inválido. Você tem + " + (3 - tentativaAtual) + " chances.");
        }

        tentativaAtual++;
        }

        if(tentativaAtual >= 4 && sucessLogin == false) {

            alert("Número de tentativas excedidas, contate o administrador.");}

</script>

Se alguém souber uma forma mais enxuta ou simplificada pra esse código, agradeço a ajuda.