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

Excluir o 0 do Array

Não estou conseguindo entender um ponto no código. Por que precisei colocar a função parseInt() no trecho "if (numeroAleatorio==segredos[posicao] || parseInt(numeroAleatorio) == 0)". Já verifiquei que numeroAleatorio é do tipo número e, outra coisa curiosa, quando retiro o parseInt os 0's continuam a aparecer no array porém com uma frequência menor. insira seu código aqui

6 respostas

Olá Robson,

Se o seu código estiver escrito em Java, é necessário utilizar o método de forma static, logo assim "chamando" a classe Integer

Integer.parseInt(numeroAleatorio)

Posta o código para entender melhor.

Desculpe, não estava conseguindo inserir o código. É o meu primeiro post rsrs

<meta charset="UTF-8">


<input type="text" id = "entrada" />

<input type="submit" id = "adivinhar" value = "Compare com o meu segredo!"/>
<script>

    function sorteia(){
        return Math.round(Math.random()*10);
    }

    function sorteiaNumeros(quantidade){
        var segredos =[];

        contador = 0;
        while (contador < quantidade){
            var numeroAleatorio=sorteia();
            alert(typeof numeroAleatorio);
            achou=false;

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

                if (numeroAleatorio==segredos[posicao] || parseInt(numeroAleatorio) == 0){
                    achou=true;
                    break;
                }
            }

            if(achou==false){
                segredos.push(numeroAleatorio);
                contador++
            }

        }
        return segredos;
    }



    function verifica(){
        var achou=false;

        for(var posicao=0;posicao<elementos;posicao++){
            if (chute.value == segredos[posicao]){
                alert("Você Acertou!");
                achou= true;
                break;
            }
        }

        if (achou==false){
                alert("Você Errou!");
            }    


        chute.value = "";
        entrada.focus();
    }

    var segredos=sorteiaNumeros(5);
    console.log(segredos);
    var elementos = segredos.length;
    var chute = document.getElementById("entrada");
    entrada.focus();

    var botao = document.getElementById("adivinhar");
    botao.onclick=verifica;



</script>
solução!

É por causa de um erro de lógica meu amigo. Quando seu programa roda a primeira vez, tudo o que você codificou dentro da estrutura "for" não vai ser utilizado. Lembre-se que a condição para que o "for" seja executado é que a variável posicao seja menor que segredos.length. Quando você roda o programa pela primeira vez, posição vale 0, e segredos.length também vale 0, pois o array ainda está vazia, ela tem 0 posições. Logo, como 0 não é menor que 0, o "for" não é iniciado. Se nesse momento, o número gerado aleatoriamente for 0, o primeiro espaço da array segredos, será preenchido por 0, já que em nenhum momento do código, a variável "achou" recebeu o valor true. Troque a condição do for para <= (menor ou igual) e tente tirar o parseInt(), já que ele não é necessário.

Obrigado Oscar! Fiquei buscando um erro na função "if" e acabei deixando passar esse erro anterior na função "for".

Por favor, marcar o tópico como resolvido.