Caso eu fosse fazer um cadastro iria utilizar array… mas a professora somente pediu para criar uma classe e nele fazer o cadastro com nome,cpf ( a validação de cpf vou implementar depois) rg etc…
E que nessa classe eu criasse metodos com exercicios que ela passou: de aumentar o salario pela quantidade de tempo na empresa e cargo depois fazer os descontos dos impostos no salario do funcionario para imprimir a folha de pagamento então criei meu código , mas ele so atribui o valor mais alto dos descontos ai o salario e a folha de pagamento estao saindo sempre negativos . E outro problema que eu tenho é que ele não faz o loop dos metodos com repita até pois são 58 funcionarios
Alguem pode me dar uma luz nesse problema ?
[code]import java.util.Calendar;
import java.util.Date;
public class Main {
static String nome;
static String rg,cpf;
static String dataDeAdmissão;
static String cargo;
static double salarioFinal,folhadepagamento,salariox;
static int op,cont=0;
public static void main (String [] a){
Teclado in = new Teclado();
do {
System.out.println("\nEntre com o nome do funcionário");
nome = in.lerLinha();
System.out.println("\nEntre com o cpf do funcionário ");
cpf = in.lerLinha();
System.out.println("\nEntre com a data de admissão do funcionário");
dataDeAdmissão = in.lerLinha();
System.out.println("Entre com o cargo do funcionário:");
System.out.println(" 1 - Gerente");
System.out.println(" 2 - Engenheiro");
System.out.println(" 3 - Técnico");
System.out.println(" 4 - Outro ");
op = in.lerInteiro();
System.out.println("\nEntre com o salário atual do funcionário");
salariox = in.lerReal();
porData();
folhaDePagamento();
cont++;
}while(cont==58);
}
static void porData() {
//Declarandojungt
double salario=salariox,salarioFinal1=0,dataUse,difSalario;
Date dataFim = new Date(dataDeAdmissão);
Date dataAtual = new Date();
dataUse = dataAtual.getYear() - dataFim.getYear();
//Calculo dos cargos de acordo com tempo = dataUse
switch(op) {
case 1: if (dataUse >= 5.0)
salarioFinal1 = salario +(salario0.10);
else if (dataUse >= 3.0 && dataUse < 5.0)
salarioFinal1 = salario +(salario0.09);
else if (dataUse < 3)
salarioFinal1 = salario +(salario0.08);
break;
case 2: if (dataUse >= 5.0)
salarioFinal1 = salario +(salario0.11);
else if (dataUse >= 3.0 && dataUse < 5.0)
salarioFinal1 = salario +(salario0.10);
else if (dataUse < 3.0)
salarioFinal1 = salario +(salario0.09);
break;
case 3: if (dataUse >= 5.0)
salarioFinal1 = salario +(salario0.12);
else if (dataUse >= 3.0 && dataUse < 5.0)
salarioFinal1 = salario +(salario0.11);
else if (dataUse < 3.0)
salarioFinal1 = salario +(salario0.10);
break;
case 4: salarioFinal1 = salario + (salario0.07);
break;
default: System.out.println(“Cargo informado inválido”);
}
difSalario = salarioFinal1-salario;
System.out.println("O novo salário do funcionario é: R$ "+salarioFinal1);
System.out.println("O salário antigo tinha o valor de: R$ "+salario);
System.out.println("A diferença entre o novo salario e o antigo salario do funcionário é de: RS "+difSalario);
salarioFinal = salarioFinal1;
}
static void folhaDePagamento(){
double rsalario,insssalario = 0,ssalario,salario=0,folhadepagamento=0,salarioliquido,totalrenda=0;
/* salario
*/
salario= salarioFinal;
if (salario<= 1.499)
rsalario=0;
if (salario>1.499 && salario<=2.246)
rsalario=112;
if (salario>2.246 && salario<=2.995);
rsalario=280;
if(salario>2.995 && salario<=3.743)
rsalario=505;
if(salario>3.743)
rsalario=692;
if (salario<=1.174)
insssalario=salario*0.08;
if (salario>1.174 && salario<=1.958)
insssalario=salario*0.09;
if(salario>1.958 && salario<=3.916)
insssalario=salario*0.11;
if (salario>3.916)
insssalario=430;
ssalario=salario*0.045;
salarioliquido=(salario-rsalario-insssalario-ssalario);
folhadepagamento=folhadepagamento+salarioliquido;
totalrenda=totalrenda+insssalario;
//verificando se os valores estão corretos
System.out.println(ssalario);
System.out.println(salarioliquido);
System.out.println(folhadepagamento);
System.out.println(totalrenda);
}
}
[/code]