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

[Dúvida] [Dúvida - While]

Oi, pessoal, tudo bem? Estou começando os estudos de JS e procuro fazer alguns exercícios para fixação da matéria. Um deles propões o seguinte:

*Faça um programa que leia e valide as seguintes informações: Nome: maior que 3 caracteres; Idade: entre 0 e 150; Salário: maior que zero; Sexo: 'f' ou 'm'; Estado Civil: 's', 'c', 'v', 'd'; Dica: se sua variável é texto, o tamanho dela está armazenado em: texto.length *

Desenvolvi um código e até a parte do salário funcionou bem. Consegui validar e, no caso de erro, é pedido uma nova inserção de dados. Porém na parte da validação do sexo e do estado civil estou encontrando dificuldades. Eu imagino que tenha a ver com o fato de não estar sabendo usar corretamente os operadores relacionais com strings. Vocês conseguiriam me ajudar? Meu código para esses dois pontos está abaixo:

//--------------- SEXO ----------------------------//
var sexo = prompt('Qual seu sexo? Responda com feminino ou masculino.');

while (sexo !== "feminino" || sexo !== "masculino") {
    alert('[ERRO] Responda com feminino ou masculino.')
    sexo = prompt('Digite novamente seu sexo:')
}

//------------- ESTADO CIVIL ----------------------//

var estcivil = prompt('Você é casado(a) - (C), solteiro(a) - (S), viúvo(a) - V ou divorciado(a) - (D)?')

while (estcivil !== "C" || estcivil !== "S" || estcivil !== "V" || estcivil !== "D") {
    alert('[ERRO] Responda com as letras C, S, V ou D.')
    estcivil = prompt('Digite novamente seu estado civil:')
}

É isso, pessoal. Se vocês conseguirem me ajudar, será ótimo! Muito obrigado!!

3 respostas
solução!

Olá, Leonardo! Tudo bem?

Pelo que entendi, o problema está na validação do sexo e do estado civil, certo? Vamos lá!

No seu código, você está utilizando o operador lógico "||" (ou), mas o correto seria utilizar o operador "&&" (e). Ou seja, enquanto o sexo não for "feminino" E não for "masculino", o loop deve continuar. O mesmo vale para o estado civil.

Segue abaixo o código corrigido:

//--------------- SEXO ----------------------------//
var sexo = prompt('Qual seu sexo? Responda com feminino ou masculino.');

while (sexo !== "feminino" && sexo !== "masculino") {
    alert('[ERRO] Responda com feminino ou masculino.')
    sexo = prompt('Digite novamente seu sexo:')
}

//------------- ESTADO CIVIL ----------------------//

var estcivil = prompt('Você é casado(a) - (C), solteiro(a) - (S), viúvo(a) - V ou divorciado(a) - (D)?')

while (estcivil !== "C" && estcivil !== "S" && estcivil !== "V" && estcivil !== "D") {
    alert('[ERRO] Responda com as letras C, S, V ou D.')
    estcivil = prompt('Digite novamente seu estado civil:')
}

Espero ter ajudado e bons estudos!

Oi, Renan! Tudo bem por aí?

Muito obrigado! Agora o código rodou certinho aqui!

Valeu mesmo!

Opa, que bom que funcionou. Fico feliz em ajudar :D