Ajude um iniciante em programação !
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
Curtidas 0
Melhor post
Marcio Souza
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.
GOSTEI 3
Mais Respostas
Weslley Felix
23/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.
Ah sim,muito obrigado Marcio !
GOSTEI 0