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

Array adicionando os Funcionarios..

Prezados, boa madrugada. Bom no Capitulo que fala sobre Arrays, no primeiro exercicio já tive problema. Alguém pode me ajudar?

public class Funcionario {
    Pessoa dadosFuncionario;
    Data dataEntradaFuncionario;
    Funcionario[] funcionarios;
    double salario;
    double aumentoSalario;
    double ganhoAnualSalario;

    void salario(double salario) {
        this.salario = salario;
    }

    void recebeAumento(double aumento) {
        this.salario += aumento;
    }

    double calculoGanhoAnual() {
        return salario *= 12;
    }

    void exibeSaida() {

        System.out.println("Nome do funcionário: " + dadosFuncionario.nome
                + "\nRg: " + dadosFuncionario.rg + "\nCpf: "
                + dadosFuncionario.cpf + "\nSexo: " + dadosFuncionario.sexo
                + "Salário R$: " + salario + "\nSalario Anual R$: "
                + calculoGanhoAnual() + "\nData Entrada Funcionario:"
                + this.dataEntradaFuncionario.getDataFormatada());

    }

}

class Pessoa {
    String nome;
    String rg;
    String cpf;
    String endereco;
    String contato;
    char sexo;
    int idade;

}

class Data {
    int dia;
    int mes;
    int ano;

    void preencheData(int dia, int mes, int ano) {
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }

    // formata data..
    String getDataFormatada() {
        return this.dia + "/" + this.mes + "/" + this.ano;
    }

}
class Empresa{

    String nomeEmpresa;
    String cnpj;
    Funcionario[] funcionarios;

    void mostraInformacoesEmpresa(){
        for(int i = 0; i < this.funcionarios.length; i++){
            Funcionario funcionario = this.funcionarios[i];
            if(funcionario == null) continue;

            System.out.println(nomeEmpresa + "\n" + funcionario.dadosFuncionario.nome + "\n" + funcionario.dadosFuncionario.cpf + 
                    funcionario.dataEntradaFuncionario.getDataFormatada());


        }
    }

}
public static void main(String[] args) {

        // Criando objeto e referência do objeto da classe Funcionario..
        Funcionario f1 = new Funcionario();

        // Criando o objeto e referência do array...

        Empresa empresa = new Empresa();
        empresa.nomeEmpresa = "Elementary 01";
        empresa.cnpj = "111.133.456-12";

        empresa.funcionarios = new Funcionario[2];
        empresa.funcionarios[0] = new Funcionario();

        empresa.funcionarios[0].dadosFuncionario.nome = "Felipe Portela";
        empresa.funcionarios[0].dadosFuncionario.cpf = "111.222.333-23";

        // saida de dados..
        empresa.mostraInformacoesEmpresa()
}

ERRO: at PrimeirosPassosJAVA.ExerciciosJAVA.OrientacaoObjetos.FuncionarioMain.main(FuncionarioMain.java:19) Linha 19: empresa.funcionarios[0].dadosFuncionario.nome = "Felipe Portela";

Alguém sabe me explicar o que tá rolando? Obrigado. Já bagunçou tá tudo confuso! rssss

3 respostas

Felipe, você não inicializou o array de funcionários da empresa:

Funcionario funcionarios[] = New Funcionario[10];

Além disso você precisará de um método para adicionar um funcionário no array. Acompanhe o curso e os vídeos que você verá como fazer isso.

solução!

A sua variável dadosFuncionario da classe Funcionario é um objeto do tipo Pessoa, portanto assim como você fez:

empresa.funcionarios[0] = new Funcionario();

você tem que fazer:

empresa.funcionarios[0].dadosFuncionario = new Pessoa();

antes de tentar atribuir um nome ou cpf.

public static void main(String[] args) {

        // Criando objeto e referência do objeto da classe Funcionario..
        Funcionario f1 = new Funcionario();
        // Criando o objeto e referência do array...
        Empresa empresa = new Empresa();
        empresa.nomeEmpresa = "Elementary 01";
        empresa.cnpj = "111.133.456-12";
        empresa.funcionarios = new Funcionario[2];
        empresa.funcionarios[0] = new Funcionario();
        empresa.funcionarios[0].dadosFuncionario = new Pessoa();
        empresa.funcionarios[0].dadosFuncionario.nome = "Felipe Portela";
        empresa.funcionarios[0].dadosFuncionario.cpf = "111.222.333-23";
        // saida de dados..
        empresa.mostraInformacoesEmpresa();

    }

lembrando que o mesmo vai acontecer para a Data, porque você não está passando nenhuma, mas no método: empresa.mostraInformacoesEmpresa(); você tenta acessar uma.

João, valeu. Resolveu meu problema! Consegui compilar de boas! rssssss