3
respostas

A condição OU não funcionou quando usei o !=

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

/*
Que tal uma dificuldade um pouco maior? Imprima todos os números entre 30 e 40 (inclusive 30 e 40), porém os números 33 e 37 não devem ser impressos! No final escreva a palavra "FIM". Use o while para essa tarefa. DICA: o if pode ajudá-lo!
*/

var numInicial = 30;
var numFinal = 40;
var excecao1 = 33;
var excecao2 = 37;

document.write("<h1>Esses são todos os numeros entre "+numInicial + " e "+ numFinal+ " </h1>");

var contador = numInicial;

while(contador <= numFinal){


if(contador != excecao1 || contador != excecao2){
        document.write(contador + "<br>");
    }
}
contador = contador+1;
}
document.write("<br><br>Fim");


</script>
3 respostas

Oi Bruno, tudo bem?

Neste caso o OU(||) não funciona, porque há erro no fechamento de chaves em seu código, no trecho que você declara a condicional if. Segue abaixo o trecho corrigido:

if(contador != excecao1 || contador != excecao2){
        document.write(contador + "<br>");
    }
    contador = contador+1;
}

Caso modifique isto, seu código voltará a funcionar.

Em relação a mostrar apenas os números que são diferentes da excecao1 e da excecao2, sugiro que utilize o operador lógico E(&&), pois, ele garante que irá imprimir um valor na tela somente quando a expressão for verdadeira para ambos os testes. Já o OU(||) garante que irá imprimir um valor na tela se apenas um dos testes for verdadeiro.

Qualquer dúvida estou a disposição. Espero ter ajudado. Bons estudos!!!

Fiz o meu dessa forma e funcionou. Utilizei o &&

var inicio = 30;
 while (inicio <= 40){

        if(inicio != 33 && inicio != 37){
            mostra(inicio);
        }
        inicio = inicio + 1;
    }

Oi Erik, tudo bem ?

É isto mesmo. Temos que utilizar o operador lógico E(&&) para esta solução, pois, o OU(||) garante que irá imprimir algum valor na tela se apenas um dos testes for verdadeiro, já o E(&&) garante que irá imprimir se ambos os testes for verdadeiro.

Exemplo: inicio = 37

  • inicio é diferente de 33? SIM
    • inicio é diferente de 37 ? NÃO

Então utilizando o operador && não irá imprimir, pois um teste falhou, mas caso utilizássemos o operador OU(||) printaria o valor 37 na tela, porque um dos testes foi verdadeiro.

Você está no caminho certo. Bons estudos!!!