Ajude um iniciante em programação !
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
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
Clique aqui para fazer login e interagir na Comunidade :)