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

Todos os números entre 30 a 40, exceto 33 e 37 com operador !=

Olá, tentei fazer esse exercício com o operador != em vez do == porém não deu certo, alguém poderia me dizer o porque?

<meta charset="utf-8">

<script>

    function pulaLinha() {

        document.write("<br><br>");
    }

    function mostra(frase) {

        document.write(frase);
        pulaLinha();
    }

    var numero = 30;

    while(numero <= 40) {

        if(numero != 33 || numero != 37) {

            mostra(numero);
            numero = numero + 1;
        } else {

            numero = numero +1;
        }

    }


    mostra("FIM");


</script>
2 respostas
solução!

Fala Yuri!

Se você quer mostrar apenas os números de 30 a 40 exceto o 33 e o 37 e usar o operador !=, você precisa trocar o OR por AND. No OR as duas condições são testadas se a primeira é FALSE, então imagina que você está na iteração do número 33, ele vai testar numero != 33 o resultado é FALSE ai o teste vai pra segunda condição numero != 37 o resultado vai ser TRUE e vai entrar no IF, por isso vai imprimir o 33 e o mesmo vai acontecer com o 37 só que vai dar TRUE na primeira condição.

    while(numero <= 40) {

        if(numero != 33 && numero != 37) {

            mostra(numero);
            numero = numero + 1;
        } else {

            numero = numero +1;
        }

    }

Sugestão de melhora do seu código como você faz numero = numero + 1 independente se cai no if ou no else, faça antes ou depois da condição e nem do else vai precisar:

    while(numero <= 40) {
        numero = numero +1;

        if(numero != 33 && numero != 37) {
            mostra(numero);
        } 
    }

Abraço

É isso, muito obrigado Thiago, agora entendi.

E sobre a sugestão, realmente faz total sentido vlw pela ajuda.