Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

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

Olá, segue meu código..

class Pessoa {
    String nome;
    String RG;
    String cpf;
    String dataNascimento;
}


class Funcionario{
    String departamento;
    double salario;
    Data dataEntrada;
    Pessoa pessoa;

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

    double calculaGanhoAnual() {
        return this.salario * 12;    
    }

    void mostra() {
        System.out.println("----Dados Do Funcionario----");
        System.out.println("Nome: " + this.pessoa.nome);
        System.out.println("RG: " + this.pessoa.RG);
        System.out.println("CPF: " + this.pessoa.cpf);
        System.out.println("Data Nascimento: " + this.pessoa.dataNascimento);
        System.out.println("Departamento: " + this.departamento);
        System.out.println("Salario: " + this.salario);
        System.out.println("Data Entrada: " + this.dataEntrada.getFormata());
        System.out.println("Ganho anual: " + this.calculaGanhoAnual());
    }

}



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;
    }

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

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

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

    }

    void mostraEmpregados(){
        for(int i = 0; i < this.empregados.length; i++){
            System.out.println("-- Func" + i+1 + " --");
            System.out.println("Nome: " + this.empregados[i].pessoa.nome);
            System.out.println("Salario: " + this.empregados[i].salario);
        }
    }    

    void dadosEmpresa(){
        System.out.println("----Dados da Empresa----");
        System.out.println("Nome Epresa: " + this.nome);
        System.out.println("CNPJ: " + this.cnpj);
        System.out.println("Endereço: " + this.endereco);
        System.out.println();
    }
}


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

        empresa.empregados[0] = new Funcionario();
        empresa.empregados[0].pessoa = Pessoa(); /*Essa linha está correta ?? Se não, como eu faço para instanciar essa classe da maneira correta??*/

        empresa.nome = "teste";
        empresa.empregados[0].departamento = "vendas";
        empresa.empregados[0].pessoa.nome = "Marko"; // Pretendo usar a classe Pessoa para mostrar o nome do funcionario



        System.out.println(empresa.nome);
        System.out.println(empresa.empregados[0].departamento); //Isto funciona..
        System.out.println(empresa.empregados[0].pessoa.nome);//Logo, essa linha tbm não funfa .. :/


    }

}

Segui no terminal erro

Funcionario.java:92: error: cannot find symbol
        empresa.empregados[0].pessoa = Pessoa();
                                       ^
  symbol:   method Pessoa()
  location: class TestaEmpresa
1 error
1 resposta
solução!

Opaa, resolvido pessoal

O erro acontecia simplesmente pq eu sempre estava esquecendo do comando new na hora de instanciar a classe Pessoa

empresa.empregados[0].pessoa = new Pessoa();  // Se esquece do new o java pensa que vc está tentando chamar uma função que não existe

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software