Fórum Ajude um iniciante em programação ! #599988
23/01/2019
0
Ola Internet. Eu sou novo em programação,ainda estou estudando algoritmos e estou na parte de aprender loops..Estou com uma dúvida para escrever um códigozinho simples...
Eu preciso escrever um programa no qual um usuário digite a letra inicial de seu sexo,sendo "f" ou "m". Se for digitado alguma letra diferente,eu devo fazer a pergunta retornar para o usuário,até ele digitar corretamente...
Sendo assim,eu fiz assim :
Aí no console fica uma mensagem desse jeito :
Digite aqui a letra inicial de seu séquiço
f
O sexo digitado então foi: f
ERRO! O SEXO É ERRADO
Digite novamente uma inicial do sexo valida
Como eu resolvo essa questão de uma maneira simples ?
Eu preciso escrever um programa no qual um usuário digite a letra inicial de seu sexo,sendo "f" ou "m". Se for digitado alguma letra diferente,eu devo fazer a pergunta retornar para o usuário,até ele digitar corretamente...
Sendo assim,eu fiz assim :
System.out.println("Digite aqui a letra inicial de seu séquiço");
String sexo = input.next();
while(!sexo.equalsIgnoreCase("f") ||!sexo.equalsIgnoreCase("m")) {
System.out.println("ERRO! O SEXO É ERRADO" );
System.out.println("Digite novamente uma inicial do sexo valida" );
sexo = input.next();
}
Aí no console fica uma mensagem desse jeito :
Digite aqui a letra inicial de seu séquiço
f
O sexo digitado então foi: f
ERRO! O SEXO É ERRADO
Digite novamente uma inicial do sexo valida
Como eu resolvo essa questão de uma maneira simples ?
Weslley Felix
Curtir tópico
+ 0
Responder
Post mais votado
24/01/2019
Seu teste condicional está errado, não pode ser OR tem que ser AND. Se usar OR ele vai testar os dois lados e vai acabar retornando false mesmo que a letra seja f.
Com OR:
> f
!sexo.equalsIgnoreCase("f") igual a FALSE
Assim ele vai testar a outra condição
!sexo.equalsIgnoreCase("m") igual a TRUE
Como uma condição é verdadeira, ele entra no while.
Por isso tem que ser AND, porque os dois lados tem que ser diferente do caractere digitado para ele entrar no while.
Com OR:
> f
!sexo.equalsIgnoreCase("f") igual a FALSE
Assim ele vai testar a outra condição
!sexo.equalsIgnoreCase("m") igual a TRUE
Como uma condição é verdadeira, ele entra no while.
Por isso tem que ser AND, porque os dois lados tem que ser diferente do caractere digitado para ele entrar no while.
Marcio Souza
Responder
Gostei + 3
Mais Posts
24/01/2019
Weslley Felix
Seu teste condicional está errado, não pode ser OR tem que ser AND. Se usar OR ele vai testar os dois lados e vai acabar retornando false mesmo que a letra seja f.
Com OR:
> f
!sexo.equalsIgnoreCase("f") igual a FALSE
Assim ele vai testar a outra condição
!sexo.equalsIgnoreCase("m") igual a TRUE
Como uma condição é verdadeira, ele entra no while.
Por isso tem que ser AND, porque os dois lados tem que ser diferente do caractere digitado para ele entrar no while.
Com OR:
> f
!sexo.equalsIgnoreCase("f") igual a FALSE
Assim ele vai testar a outra condição
!sexo.equalsIgnoreCase("m") igual a TRUE
Como uma condição é verdadeira, ele entra no while.
Por isso tem que ser AND, porque os dois lados tem que ser diferente do caractere digitado para ele entrar no while.
Ah sim,muito obrigado Marcio !
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)