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

Função sorteia()

Olá camaradas! Tenho mais uma dúvida! Esse código deveria mostrar a mensagem "Acertou!" quando o número digitado se encontra dentro do array e a mensagem "Errou" quando o número não está.

Entretanto, quando o número é acertado, o programa ainda exibe o "Errou"!. Quebrei um puco de cabeça aqui e não consegui encontrar uma solução para que a mensagem "Errou" não seja exibida quando número é acertado.

Vocês podem me ajudar?

Obrigado!

<meta charset="UTF-8">

<input id = "input">
<button id = "botao">Sorteio!</button>

<script>


var numero = document.getElementById("input");
numero.focus();

var segredos = [16, 34, 37, 42, 50, 58]

function sorteia() {
    for(var i = 0; i < segredos.length; i++) {
        if(segredos[i] == numero.value) {
            alert("Acertou");
            break;
        }

    }
    alert("Errou");    
    numero.value = "";
    numero.focus();
}

var botao = document.getElementById("botao");

botao.onclick = sorteia;

</script>
3 respostas
solução!

Olá Lucas,

primeiro vamos entender por que o "Errou" sempre acontece.

Veja que o comando breakapenas cancela as iterações restante do for, e deste modo tudo que vem depois do for ainda será executado. Como o "Errou" ficou fora de qualquer if, isso significa que sempre será executado.

A solução mais simples é guardar numa variável se você encontrou alguém ou não, e só no final decidir o que imprimir. O código ficaria assim:

function sorteia() {
    var achei = false;
    for(var i = 0; i < segredos.length; i++) {
        if(segredos[i] == numero.value) {
            achei = true;
            break;
        }
    }
    if (achei) {
            alert("Acertou");
    } else {
        alert("Errou");
    }    
    numero.value = "";
    numero.focus();
}

Abraços, Victor.

Oi Victor! Boa explicação. Lucas, tranquilo agora? Se ficou com dúvida nos diga.

Olá Victor! Agora eu entendi!

No início eu até tinha pensando nessa possibilidade de criar uma variável mas me parecia algo muito "manual" , mas de fato se presta a resolver meu problema.

Obrigado pela ajuda!

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