1
resposta

Login invalido só aparece a partir da segunda tentativa

Se coloco os dados errados na primeira tentativa não recebo o alerta "Login Inválido". Além disso, o código continua em loop se coloco as infos corretas. Alguém pode me ajudar:

<meta charset="UTF-8">
<script>

    var loginCadastrado = "alura";
    var senhaCadastrada = "alura321";

    var loginInformado = prompt("Informe seu login");
    var senhaInformada = prompt("Informe sua senha");
    var limitetentativas = 3
    var tentativaAtual = 1



    while (tentativaAtual <= limitetentativas) {

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

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

        alert("Bem-vindo ao sistema " + loginInformado);
    } 
        else if(tentativaAtual == 3){
        alert("Número permitido de tentativas ultrapassado!");
        tentativaAtual++;
        } else {
        alert("Login inválido. Tente novamente");
        tentativaAtual++;  
     }  
     tentativaAtual = limitetentativas + 1;
    } 

</script>
1 resposta

Oi Gabrieli

Você está pedindo o login e senha 2 vezes antes de fazer a verificação e é isso que está acontecendo quando executa o programa, você digita e somente na segunda vez ele verifica.

Outro detalhe é que você no final do while está atribuindo tentativaAtual a limitetentativas + 1 e faz ele ficar com o valor 4 e assim não irá repetir o laço do while.

Aqui está seu código com as linhas comentadas para ele executar como quer:

<meta charset="UTF-8" />
<script>
  var loginCadastrado = 'alura';
  var senhaCadastrada = 'alura321';

  // var loginInformado = prompt('Informe seu login');
  // var senhaInformada = prompt('Informe sua senha');
  var limitetentativas = 3;
  var tentativaAtual = 1;

  while (tentativaAtual <= limitetentativas) {
    var loginInformado = prompt('Informe seu login');
    var senhaInformada = prompt('Informe sua senha');

    if (
      loginCadastrado == loginInformado &&
      senhaCadastrada == senhaInformada
    ) {
      alert('Bem-vindo ao sistema ' + loginInformado);
      tentativaAtual = limitetentativas + 1; // deve ficar aqui o controle para sair do loop
    } else if (tentativaAtual == 3) {
      alert('Número permitido de tentativas ultrapassado!');
      tentativaAtual++;
    } else {
      alert('Login inválido. Tente novamente');
      tentativaAtual++;
    }
    // tentativaAtual = limitetentativas + 1;
  }
</script>

Parabéns pelo empenho nos estudos!

Continue praticando e qualquer dúvida pode contar com a gente.