[RESOLVIDO]Pequena dúvida na hora da execução

3 respostas
J

Olá pessoal, estou com um pequeno problema aqui. Acho que aqui é o local ideal pra postar minha dúvida já que comecei a estudar Java a pouco tempo.

Bom, olhando na apostila do curso, resolvi fazer um dos exercícios. Nele pedia pra fazer uma aplicação para RH que quando determinados dados fossem inseridos, a aplicação retornaria se o novo funcionário estaria aprovado ou não.

Eu montei todo o código, e na hora da execução, o primeiro if (para funcionário masculino e feminino) funcionam, os demais não apresentam retorno da condição imposta. Se alguém puder me dizer onde estou errando, ou o que está faltando, eu agradeço.

Segue abaixo o código:

import java.util.Scanner;

public class ExercicioRH {

	
	public static void main(String[] args) {
		
	
		Scanner sc = new Scanner(System.in);
		
		System.out.println("Digite o nome do funcionário:");
		String nome = sc.nextLine();
		
		System.out.println("Digite sexo (M para masculino / F para feminino):");
		String sexo = sc.next();
		
		System.out.println("Portador de necessidades especiais (S sim / N não):");
		String deficiente = sc.next();
		
		System.out.println("Digite a idade:");
		int idade = sc.nextInt();
		
		
		//Funcionários do sexo masculino
		if ((sexo.equals("M")) && (deficiente.equals("S")) && (idade >= 18 && idade <= 45)){
			
			System.out.println("O funcionário: " + nome +  " está aprovado");
		}			
		
		if ((sexo.equals("M")) && (deficiente.equals("S")) && (idade < 18 && idade > 45)){
				
			System.out.println("O funcionário: " + nome + " está reprovado");
		}
				
		
		if ((sexo.equals("M")) && (deficiente.equals("N")) && (idade >= 18 && idade <= 24)){
					
			System.out.println("O funcionário: " + nome + " está aprovado");
					
		}
									
		if ((sexo.equals("M")) && (deficiente.equals("N")) && (idade < 18 && idade > 24)){
						
			System.out.println("O funcionário: " + nome + " está reprovado");
						
		}
				
		
		//Funcionários do sexo feminino			
		if ((sexo.equals("F")) && (deficiente.equals("S")) && (idade >= 20 && idade <= 50)){
						
			System.out.println("O funcionário: " + nome + " está aprovado");
			
		}	
		
		if ((sexo.equals("F")) && (deficiente.equals("S")) && (idade < 20 && idade > 50)){
			
			System.out.println("O funcionário: " + nome + " está reprovado");
			
		}
		
		if ((sexo.equals("F")) && (deficiente.equals("N")) && (idade >= 18 && idade <= 28)){
			
			System.out.println("O funcionário: " + nome +  "está aprovado");
			
		}
		
		if ((sexo.equals("M")) && (deficiente.equals("N")) && (idade < 18 && idade > 28)){
			
			System.out.println("O funcionário: " + nome + " está reprovado");
			
		}

			
	}
		
	}

As condições são:

-Homens deficientes com idades entre 18 e 45 estão aprovados

-Mulheres deficientes com idades entre 20 e 50 estão aprovados

-Homens não deficientes com idades entre 18 e 24 estão aprovados

-Mulheres não deficientes com idades entre 18 e 28 estão aprovados

-Os demais estão reprovados

Agradeço a ajuda.

Tópico editado com códigos na tag code. Malz ae galera, não sabia, meu primeiro tópico.

3 Respostas

alxdre.pestana

Boa noite…

Este segundo seu IF nunca ira entrar…
Pense bem…

A idade tem que ser menor que 18 e o mesmo valor maior que 45? idade < 18 && idade > 45
Não deveria ser um “OR” -> idade < 18 || idade > 45

if ((sexo.equals("M")) && (deficiente.equals("S")) && (idade < 18 && idade > 45)){

         System.out.println("O funcionário: " + nome + " está reprovado");
}

Abraco

SierraEx

Olá Jean, por favor, poste seu código entre as tags code /code para entendermos melhor, obrigado.

J

alxdre.pestana:
Boa noite…

Este segundo seu IF nunca ira entrar…
Pense bem…

A idade tem que ser menor que 18 e o mesmo valor maior que 45? idade < 18 && idade > 45
Não deveria ser um “OR” -> idade < 18 || idade > 45

if ((sexo.equals("M")) && (deficiente.equals("S")) && (idade < 18 && idade > 45)){

         System.out.println("O funcionário: " + nome + " está reprovado");
}

Abraco

Valeu ae alxdre.pestana, muito obrigado cara. Eu tinha esquecido desse detalhe. Era esse mesmo o problema. Obrigado mesmo.

Criado 2 de outubro de 2012
Ultima resposta 2 de out. de 2012
Respostas 3
Participantes 3