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

PROBLEMA COM ARRAYS

Boa tarde, estou com duvidas na parte de fazer o terminal imprimir a array de funcionarios dentro da classe EMPRESA e uma duvida do processo lógico do método "adiciona"

class Empresa{
    String nome;
    String cnpj;
    Funcionario[] funcionarios;
    int contador =0;

    void adiciona(Funcionario f){
        this.funcionarios[this.contador] = f;
        this.contador++;
    }
    void show(){
        System.out.println("Nome:" + this.nome);
        System.out.println("CNPJ:" + this.cnpj);
        System.out.println("Funcionarios:" + funcionarios[0]);
    }
}

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 getFormatada(){
        return this.dia + "/" + this.mes + "/" + this.ano;
    }
}
class Funcionario {
    String departamento ="Departamento";
    double salario=00;
    Data dataDeEntrada;
    String rg="00.000.000.0";
    String nome="Seu Nome e Sobrenome";


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

    }

    void calculaGanhoMensal(double ganhoMensal){

        this.salario *= ganhoMensal;
    }

    void mostra(){
    System.out.println("Nome:" + this.nome);
    System.out.println("RG:" + this.rg);
    System.out.println("Departamento:" + this.departamento);
    System.out.println("Data de entrada:" + this.dataDeEntrada.getFormatada());
    System.out.println("Salario:" + salario);    
    }
}
 class alura {

    public static void main(String[] args) {
        Funcionario f1 = new Funcionario();
        f1.departamento="PROFESSOR";
        f1.salario=1200;
        f1.dataDeEntrada = new Data();
        f1.dataDeEntrada.preencheData(03,8, 2016);
        f1.rg="11.111.111-1";
        f1.nome="Lucas Silveira Vieira";
        System.out.println("FUNCIONARIO");
        f1.mostra();


        Empresa e1 = new Empresa();
        e1.nome="Chroma";
        e1.cnpj="11111111";
        e1.funcionarios = new Funcionario[3];
        e1.adiciona(f1);
        System.out.println("EMPRESA");
        e1.show();

    }

}

Após executar, na parte de imprimir a linha "Funcionarios" o terminal exibe da seguinte forma:

FUNCIONARIO
Nome:Lucas Silveira Vieira
RG:11.111.111-1
Departamento:PROFESSOR
Data de entrada:3/8/2016
Salario:1200.0
EMPRESA
Nome:Chroma
CNPJ:11111111
Funcionarios:Funcionario@15db9742
3 respostas

Boa tarde, Lucas! Tudo bem com você, cara? =)

Desculpa, acho que não entendi qual a sua dúvida, você poderia dar uma esclarecida, por favor? =)

Fábio

Oi Lucas, se o seu problema é porque o nome do funcionário não está sendo impresso é porque você deixou de passar o nome

System.out.println("Funcionarios:" + funcionarios[0].nome);
solução!

Boa noite, Lucas!

O problema está no método show da classe Empresa.O código não passa o nome do Funcionario.

Outro problema é que o código apenas chama o Funcionario na posição 0. Ao instanciar mais de um Funcionario para a mesma Empresa o método show não irá apresentar o nome do Funcionario[1], Funcionario[2], ...

Segue uma sugestão para o seu código.

void show(){

        System.out.println("Nome:" + this.nome);
        System.out.println("CNPJ:" + this.cnpj);

    for (int i = 0; i < this.contador; i++){
            System.out.println("Funcionario:" + funcionarios[i].nome);
    }

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