3
respostas

Programa só encontra se for o primeiro valor do array

Meu código está igual ao do professor (somente o nome de algumas variáveis diferentes) porém está dando erro. Enquanto no vídeo o código do professor procura pelo valor da array e dá certo quando encontra. O meu código só encontra se for o primeiro valor do array, os outros ele não encontra. (estou me referindo à aula 9 video 1) de Lógica de Programação I.

<script>

    var segredos = [2,5,7,10];

    var local = document.querySelector('input');

    local.focus();

    function verifica (){

        for (var posicao = 0 ; posicao <4 ; posicao++){

            if (local.value==segredos[posicao]){

                alert('VOCÊ ACERTOU O NÚMERO!');
                break;

            }
            else{

                alert('Você ERROU!\nNão é esse o número!');
            }

            local.value = '';
            local.focus();    
        }
    }

    var botao = document.querySelector('button');
    botao.onclick = verifica;

</script>
3 respostas

O erro acontece porque você percorre o if e else dentro do for, quando deveria ter somente o o if dentro do for para percorrer toda a lista. Da maneira que você fez se não for o primeiro item da lista então cai na condição else e informa que errou. Abaixo o código correto.

<meta charset="UTF-8">

<input/>
<button>Compare com o meu segredo</button>

<script>

    var segredos = [5,7,10,2,3];

    var input = document.querySelector("input");
        input.focus();

    function verifica() {

            var achou = false;

            for(var posicao = 0; posicao < segredos.length; posicao++) {

                if(input.value == segredos[posicao]) {

                    alert("Você ACERTOU!");
                    achou = true;
                    break;
        } 
            }

                                if(achou == false) {

                                    alert("Você ERROU!");
                                }

                                input.value = "";
                input.focus();

    }

    var button = document.querySelector("button");

    button.onclick = verifica;

</script>

Eu na verdade nem cheguei a cogitar a ideia de verificar o código porque está igual ao do video (exceto alguns nomes). O que eu realmente queria saber é por que o mesmo código funciona com o professor e comigo dá esse erro. É atualização do navegador ou algo assim??

O jeito que está funcionando seu código Jacson não é o jeito que eu gostaria. O seu código alerta que a resposta está certa independente da posição do número na array. Eu queria que funcionasse como está o do professor no video: só alerta que está certo quando alcança a posição do número no array. EX: lista[2,5,7] . Se digitar "5" no programa ele alerta uma vez que está errado (pois o primeiro é 2 na lista) e somente depois ele avisa com outro alerta que está certo (pois logo depois do 2 é o 5 na lista).