3
respostas

Como usar "OU" em um laço de repetição WHILE

Estou criando um programa onde pergunto para o usuário qual é seu sexo, (javascript)

Solicito que coloque "F" para feminino ou "M" para masculino.

No laço de repetição tenho como objetivo testar: Enquanto sexo for diferente de "F" ou "M", repetir a solicitar ao usuario que informe o sexo.

No entanto, estou colocando || como forma de "OU", mas não da certo

 var sexo = prompt("Informe seu sexo.  M para Masculino e F para Feminino.")
while(sexo != 'F' || 'M'){
        alert("incorreto, informe novamente o sexo");
        sexo = prompt("Informe seu sexo.  M para Masculino e F para Feminino.")

    }
3 respostas

Faça assim:

while ( sexo != 'F' && sexo != 'M' )

Neste caso o operador correto é o && (E)

Porque para está errado, sexo deve ser diferente de F e também de M.

Boa noite, Miguel. Tudo bem.

Nesse caso, você está usando a condição de OU, quando o ideal seria usar a condição de E.

Fiz a alteração que sana o seu problema.

Espero ter ajudado.

sexo = prompt("Informe seu sexo.  M para Masculino e F para Feminino.");

//noprotect
while(sexo != 'F' && sexo != 'M'){
        alert("incorreto, informe novamente o sexo");
        sexo = prompt("Informe seu sexo.  M para Masculino e F para Feminino.");

}

Oi, Miguel

O correto foi informado pelos colegas acima

Outro modo de fazer com o While


let sexo;
while (true) {
  sexo = prompt("Informe seu sexo: \n[ M ] para Masculino \n[ F ] para Feminino.") || 'F';  
  if (['F', 'f', 'M', 'm'].includes(sexo)) break;
  alert("Valor incorreto! \nInforme novamente o sexo");
}
console.log(sexo.toUpperCase())