[RESOLVIDO]-método para aumentar salário

11 respostas
M

Oi, preciso implementar um método que se chama aumentaSalario() na classe Funcionario, o método deve aumentar o salário do funcionário aplicando uma das três taxas, de acordo com a tabela seguinte:

Idade do funcionario: menos de 27 anos;
tempo de serviço: qualquer;
taxa a ser aplicada: menor taxa;

Idade do funcionario: de 27 a 38 anos;
tempo de serviço: menos de 7 anos
taxa a ser aplicada: taxa intermediária
tempo de serviço: de 7 anos ou mais
taxa a ser aplicada: maiorTaxa;

Idade do funcionario: acima de 38 anos
tempo de serviço: qualquer
taxa a ser aplicada: maior taxa

Pois bem, nessa mesma classe, eu tenho os seguintes métodos:

public int calculaTempoDeServico(int ano_entrada){
            Data d = new Data();
            int tempo = d.getAno() - ano_entrada;
            return tempo;
            
        }

e

public int calculaIdade(int ano_nasc){
            Data d = new Data();
            Teclado t = new Teclado();
            int idade = d.getAno() - ano_nasc;
            return idade;
             
       }

Sendo que eu preciso montar o meu método com as informações vindas desses métodos, ficaria assim?

public double aumentaSalario(double, taxa1, taxa2, taxa3){
if(calculaIdade() < 27){
salario = salario+salario*menorTaxa;
}else if (calculaIdade() >= 27 && calculaIdade() <=38 && calculaTempoDeServico() <=7){
salario = salario+salario*taxaIntermediaria;
} else if (calculaIdade() >= 27 && calculaIdade() <=38 && calculaTempoDeServico() >=7){
salario = salario+salario*maiorTaxa;
}else if (calculaIdade() > 38){
salario = salario+salario*maiorTaxa;

11 Respostas

ssh

sim

jeanmalvessi

Cara, pelo título achei que vc estava pedindo ajuda para pedir um aumento… kkkkkkkkk

jks1903

Tomara que essa nao seja uma aplicação real, porque é sacanagem o cara receber automaticamente a menor taxa de aumento, independente do tempo de trabalho apenas por ter menos de 27 anos, rsrs.

M

verdade, pelo título eu tava pedindo aumento…hahahahahaha

drsmachado

É sempre bom colocar títulos descritivos, objetivos e diretos. “método para aumento de salário” não me diz o que está acontecendo.
Claro que coisas como [Dúvida], [Erro], [Help], [Problema] são desnecessárias. Você se encontra em um fórum cuja função é a de sanar dúvidas, resolver problemas, identificar e tentar contornar erros, logo, isso é óbvio.
Então, da próxima vez, seja mais objetivo, coloque um título que realmente descreva o conteúdo do tópico.

Scoobydoo

Olha só, um método melhor de fazer isso seria assim

public double aumentaSalario(double, taxa1, taxa2, taxa3){  
Int valor = calculaIdade(); //Outra coisa importante, você tem que passar o parametro ANO na função | calculaIdade(ANO) |
Int tempoServico =  calculaTempoDeServico(); //o mesmo aqui
if(valor < 27){  
    salario = salario+salario*menorTaxa;  
}else if (valor  >= 27 && valor  <=38 && tempoServico  <=7){  
    salario = salario+salario*taxaIntermediaria;  
}else if (valor  >= 27 && valor  <=38 && tempoServico >=7){  
    salario = salario+salario*maiorTaxa;  
}else (valor){  
    salario = salario+salario*maiorTaxa;  
}

Por que isso?
Note que eu executei o calculo apenas 2 vezes, sendo que em seu código ele foi executado 8 vezes. Isso aumenta a performace em 4x!

M
cara, as funções pra calcular a idade e o tempo de serviço eu tenho, que são essas aqui:
public int calculaIdade(int ano_nasc){
            Data d = new Data();
            Teclado t = new Teclado();
            int idade = d.getAno() - ano_nasc;
            return idade;
             
       } 

        public int calculaTempoDeServico(int ano_entrada){
            Data d = new Data();
            int tempo = d.getAno() - ano_entrada;
            return tempo;
            
        }

e eis aí que tenho o meu problema, lá no método aumentaSalario, ele recebe via teclado as 3 taxas, e eu não estou conseguindo adaptar a verificação do maior, menor e intermediário, nesse método.

Mas de fato, do jeito que tu fez ficou bem mais enxuto.

Scoobydoo

Max, veja na sua outra pergunta no guj sobre como verificar o maior o menor e o número intermediario.
Enxuta sim, mas mais performática.

M

daí por exemplo, essa é a verificação do maior, menor e intermediário:
pessoal é o seguinte, consegui fazer aqui e ficou assim..

// Condição do Primeiro Número		
    		
    		if (taxa1 > taxa2 && taxa1 > taxa3){
    			 System.out.println("O Maior Número: " + taxa1);
    			}
    		
    			if (taxa1 < taxa2 && taxa1 > taxa3 || taxa1 > taxa2 && taxa1 < taxa3){
    				System.out.println("O Número intermediário: " + taxa1);
    			}
    		
    				if (taxa1 < taxa2 && taxa1 < taxa3){
    					System.out.println("O Menor Número: " + taxa1);
    				}
    				    
    		// Condição do Segundo Número
    		
    		if (taxa2 > taxa1 && taxa2 > taxa3){
    		 System.out.println("O Maior Número: " + taxa2);
    		}
    	
    			if (taxa2 < taxa1 && taxa2 > taxa3 || taxa2 > taxa1 && taxa2 < taxa3){
    				System.out.println("O Número intermediário: " + taxa2);
    			}
    	
    				if (taxa2 < taxa1 && taxa2 < taxa3){
    					System.out.println("O Menor Número: " + taxa2);
    				}
    
            // Condição do Terceiro Número
    		
    		if (taxa3 > taxa1 && taxa3 > taxa2){
    			System.out.println("O Maior Número: " + taxa3);
    		}
    
    			if (taxa3 < taxa1 && taxa3 > taxa2 || taxa3 > taxa1 && taxa3 < taxa2){
    				System.out.println("O Número intermediário: " + taxa3);
    			}
    
    				if (taxa3 < taxa1 && taxa3 < taxa2){
    					System.out.println("O Menor Número: " + taxa3);
    				}

e aí que eu não consigo adaptar ela para fazer o aumentaSalario funcionar corretamente...

Scoobydoo

Podes carregar 3 variaveis novas em vez de dar o system.out.println…
Substitui pelo menorTaxa, maiorTaxa, taxaIntermediaria…
Ai depois usa elas na função do aumentaSalario.

M

valeu, resolvido…!!

Criado 23 de abril de 2013
Ultima resposta 25 de abr. de 2013
Respostas 11
Participantes 6