Ajude um iniciante em programação !

23/01/2019

15

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 ?
Weslley Felix

Weslley Felix

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.

Marcio Souza

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.





Ah sim,muito obrigado Marcio !
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários,
consulte nossa política de privacidade.

Aceitar