Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

[JAVA] Associar Dependente a Um funcionário com limite de 5 Dependentes por Funcionário

Prezados. Preciso associar o limite máximo de 05 dependentes por funcionário sendo que a idade limite do dependente é de 18 anos para FuncionarioTemporario e 21 anos para FuncionarioConcursado. Não consigo encontrar o erro no meu código!

Abaixo segue a Classe mãe "Funcionario", a subclasse "FuncionarioConcursado" e a classe "Dependente". O MAIN vou postar em forma de resposta.

insira seu código aqui
import java.util.ArrayList;

public class Funcionario {

    public String codigoFuncionario;
    public double salarioFuncionario;

    public ArrayList<Dependente> dependentes = new ArrayList<Dependente>();

    public boolean associaDependente(Dependente d) {
        if (dependentes.size() > 5) {
            System.out.println("Há um limite de 05 dependentes por funcionário");
            return false;
        } else {
            dependentes.add(d);
        }
        return true;
    }

    public int obtemQuantidadeDependentesNaIdadeLimite(int idadeDependente) {

        int totalIdade = 0;

        for (Dependente d : this.dependentes) {
            if (totalIdade < idadeDependente) {
                totalIdade++;

            }
        }
        return totalIdade;
    }
}


public class FuncionarioConcursado extends Funcionario {

    public int anosContratacao;

    public FuncionarioConcursado(String codigoFuncionario, double salarioFuncionario, int anosContratacao) {

        this.codigoFuncionario = codigoFuncionario;
        this.salarioFuncionario = salarioFuncionario;
        this.anosContratacao = anosContratacao;
    }

    public double calculaSalario() {

        return this.salarioFuncionario
                + (this.anosContratacao * 200.0 + this.obtemQuantidadeDependentesNaIdadeLimite(21) * 100.0);

    }

    public void imprime() {
        System.out.println("FUNCIONÁRIO CONCURSADO");
        System.out.println("Código do funcionário: " + this.codigoFuncionario);
        System.out.println("Anos contratação: " + this.anosContratacao);
        int somaDependentes = 0;
        for (int i = 0; i < this.dependentes.size(); i++) {
            if (this.dependentes.get(i) .estaNaIdadeLimite(21) == true) {
                somaDependentes ++;
            }

        }

        System.out.println("Dependentes dentro da idade limite: " + this.obtemQuantidadeDependentesNaIdadeLimite(21));
        System.out.println("Salário total: " + calculaSalario());

    }
}


public class Dependente {

    public int idadeDependente;

    public boolean estaNaIdadeLimite(int idade) {

        if (this.idadeDependente == idade) {
            return true;
        } else {
            return false;
        }
    }
}

5 respostas

MAIN "FolhaPagamento":

import java.util.ArrayList;
import java.util.Scanner;

public class FolhaPagamento {

    public static ArrayList<FuncionarioConcursado> funcionariosConcursados;
    public static ArrayList<FuncionarioTemporario> funcionariosTemporarios;

    public static void main(String[] args) {

        Scanner teclado = new Scanner(System.in);

        System.out.println("Informe a quantidade de funcionários: ");
        int quantidadeDeFuncionarios = teclado.nextInt();
        teclado.nextLine();

        funcionariosConcursados = new ArrayList<FuncionarioConcursado>();
        funcionariosTemporarios = new ArrayList<FuncionarioTemporario>();

        int contador = 0;

        while (contador < quantidadeDeFuncionarios) {

            System.out.println("Informe o tipo de funcionário: [1 = Concursado / 2 = Temporário] ");
            int tipoDeFuncionario = teclado.nextInt();
            teclado.nextLine();

            System.out.println("Funcionário " + contador);

            System.out.println("Informe o código do funcionário");
            String codigoFuncionario = teclado.nextLine();

            System.out.println("Informe o salário do funcionário: ");
            int salarioFuncionario = teclado.nextInt();
            teclado.nextLine();

            System.out.println("Quantos dependentes você deseja associar a este funcionário? ");
            int quantidadeDeDependentes = teclado.nextInt();
            teclado.nextLine();

            ArrayList<Dependente> dependentes = new ArrayList<Dependente>();

            int contadorDeDependentes = 0;

            while (contadorDeDependentes < quantidadeDeDependentes) {

                System.out.println("Dependente " + contadorDeDependentes);

                System.out.println("Informe a idade do dependente: ");
                int idade = teclado.nextInt();
                teclado.nextLine();

                Dependente d = new Dependente(); // no exemplo teria que colocar idade dentro dos parenteses.

                dependentes.add(d);

                contadorDeDependentes++;
            }

            if (tipoDeFuncionario == 1) {

                System.out.println("Informe quantos anos o funcionário trabalha: ");
                int anosContratacao = teclado.nextInt();
                teclado.nextLine();

                FuncionarioConcursado funcionario = new FuncionarioConcursado(codigoFuncionario, salarioFuncionario,
                        anosContratacao); // talvez aqui ta errado

                for (Dependente d : dependentes) {
                    funcionario.associaDependente(d);

                }

                funcionariosConcursados.add(funcionario);

            } else {

                System.out.println("Informe quantos meses o funcionário trabalha: ");
                int mesesContratacao = teclado.nextInt();
                teclado.nextLine();

                FuncionarioTemporario funcionario = new FuncionarioTemporario(codigoFuncionario, salarioFuncionario,
                        mesesContratacao); // talvez aqui ta errado

                for (Dependente d : dependentes) {
                    funcionario.associaDependente(d);
                }

                funcionariosTemporarios.add(funcionario);

            }

            contador++;

        }

        for (FuncionarioConcursado funcionario : funcionariosConcursados) {
            funcionario.imprime();
        }

        for (FuncionarioTemporario funcionario : funcionariosTemporarios) {
            funcionario.imprime();
        }
    }
}

up!!!!!

Boa tarde!

Vendo seu código, não existe o tratamento de idade em nenhum ponto do código.

Ele vai deixar adicionar sempre, até um limite de 5.

Eu devo corrigir isso no obtemQuantidadeDependentesNaIdadeLimite?

solução!

Resolvi já.