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

Dúvida no Ex. 3 da Aula 4 - Arrays

Estou tentando resolver o exercício, mas quando coloco pra rodar meu arquivo, não consigo pegar as informações da classe Data, ficando 0/0/0. Segue o código a seguir:

public class Funcionario {

        String nome;
        String departamento;
        double salario;

        Data dataDeEntrada;
        Empresa empresa;

        void recebeAumento(double quantidade) {
            this.salario += quantidade;
        }
         double calculaGanhoAnual() {
            return this.salario * 12;
        }
         void mostra() {
             System.out.println("Nome: " + this.nome);
             System.out.println("Departamento: " + this.departamento);
             System.out.println("Salario atual: " + this.salario);
             System.out.println("Ganho anual: " + this.calculaGanhoAnual());
             System.out.println("Data de entrada: " + this.dataDeEntrada.getFormatada());

         }
}
public class Data {

            int dia;
            int mes;
            int ano;


    void mostraData(int dia, int mes, int ano) {
        System.out.println(this.getFormatada());
    }

    String getFormatada() {
                return this.dia + "/" + this.mes + "/" + this.ano;
            }

}
public class Empresa {
    String nome;
        String cnpj;
        Funcionario[] empregados;
        int livre = 0;

        void adiciona(Funcionario f) {
            this.empregados[this.livre] = f;
            this.livre++;

    }

}
public class testaEmpresa {
        public static void main(String[] args) {
               Empresa empresa = new Empresa();
        empresa.empregados = new Funcionario[10];

        Funcionario f1 = new Funcionario();
        f1.dataDeEntrada = new Data();
        f1.nome = "Haniel";
        f1.departamento = "TI";
        f1.salario = 1000;
        f1.dataDeEntrada.mostraData(28, 07, 2000);
        empresa.adiciona(f1);

        Funcionario f2 = new Funcionario();
        f2.dataDeEntrada = new Data();
        f2.nome = "Bill Gates";
        f2.departamento = "Chefe";
        f2.salario = 2000;
        f2.dataDeEntrada.mostraData(20, 02, 2004);
        empresa.adiciona(f2);

        Funcionario f3 = new Funcionario();
        f3.dataDeEntrada = new Data();
        f3.nome = "teste";
        f3.departamento = "lol";
        f3.salario = 3000;
        f3.dataDeEntrada.mostraData(8, 12, 2002);
        empresa.adiciona(f3);

        for ( int i = 0; i < empresa.empregados.length; i++ ) {
            if(empresa.empregados[i] != null){
                empresa.empregados[i].mostra();
        }
    }

}}
2 respostas
solução!

Os parâmetros passados para a data não são atribuídos aos atributos da classe, experimenta passar primeiro para os atributos e depois chamar o método de mostrar.

Demorei a conseguir mas deu certo!

Vlw pela dica!