Ajude um iniciante em programação !

23/01/2019

14

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 :

 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 ?
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.

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.





Ah sim,muito obrigado Marcio !
Responder