3
respostas

Não consigo implementar o método adiciona

Apesar de o meu código compilar, quando eu tendo evocar o método adicionar criado, ele da erro. Já tentei e não consigo encontrar meu erro.

class Empresa{
    String nomeEmpresa;
    String cnpjEmpresa;
    Funcionario[] empregados;
    int i = 0;

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

    }

    void mostraEmpresa(){
        System.out.println("Nome da empresa : "+nomeEmpresa);
        System.out.println("CNPJ : "+cnpjEmpresa);
        System.out.println();
    }
}

class Funcionario{
    String nome;
    String departamento;
    double salario;
    Data dataDeEntrada;
    String RG;

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

    }

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

    void mostraFuncionario(){
        System.out.println("Nome : "+this.nome);
        System.out.println("Departamneto : "+this.departamento);
        System.out.println("Salario : "+this.salario);
        System.out.println("Data de Entrada : "+this.dataDeEntrada.dataFormatada());
        System.out.println("RG : "+this.RG);
        System.out.println("Salariorio Anual : "+this.calculaGanhoAnual());
        System.out.println();
    }
}

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 dataFormatada(){
        return this.dia+"/"+this.mes+"/"+this.ano;
    }
}

class Cadastro{
    public static void main(String[]args){

        //Criando a empresa
        Empresa emp = new Empresa();
        emp.nomeEmpresa = "Gamei";
        emp.cnpjEmpresa = "618.486.486-50";

        //Imprime dados da empresa
        emp.mostraEmpresa();

        //Criando Array
        Funcionario empregados[] = new Funcionario[10];

        //Criando Funcionario F1
        Funcionario F1 = new Funcionario();
        F1.nome = "Octy";
        F1.departamento = "Game Design";
        F1.salario = 7000.00;
        F1.RG = "687.786.687-X";
        F1.dataDeEntrada = new Data();
        F1.dataDeEntrada.preencheData(05,07,2016);



        //Imprime dados do funcionario F1
        F1.mostraFuncionario();

        //Criando Funcionario F2
        Funcionario F2 = new Funcionario();
        F2.nome = "Bya";
        F2.departamento = "Assistente do Game Designer";
        F2.salario = 4000.00;
        F2.RG = "486.354.456-Z";
        F2.dataDeEntrada = new Data();
        F2.dataDeEntrada.preencheData(12,10,2016);

        //Imprime dados do funcionario F2
        F2.mostraFuncionario();




    }
}
3 respostas

o vetor está sendo criado da maneira errada, Primeiro como voce pode observar que já tem uma instancia na classe empresa mas aparentemente ela está null ou seja no main voce tem qu eestanciar ela emp.empregados=new Empregados{10] depois disso voce tem que criar cada posicao desse vetor porque e um vetor de objeto exemplo emp[0].empregados=new Funcionarios(); espero que eu tenha ajudado...

Cara, obrigado pela ajuda mas eu ainda não entendi. Sem querer abusar vc podia ser mais claro?

package br.com.alura.loja.modelo;

class Empresa { String nomeEmpresa; String cnpjEmpresa; Funcionario[] empregados = new Funcionario[10]; int i = 0;

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

}

void mostraEmpresa() { System.out.println("Nome da empresa : " + nomeEmpresa); System.out.println("CNPJ : " + cnpjEmpresa); System.out.println(); } }

class Funcionario { String nome; String departamento; double salario; Data dataDeEntrada; String RG;

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

}

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

void mostraFuncionario() { System.out.println("Nome : " + this.nome); System.out.println("Departamneto : " + this.departamento); System.out.println("Salario : " + this.salario); System.out.println("Data de Entrada : " + this.dataDeEntrada.dataFormatada()); System.out.println("RG : " + this.RG); System.out.println("Salariorio Anual : " + this.calculaGanhoAnual()); System.out.println(); } }

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 dataFormatada() { return this.dia + "/" + this.mes + "/" + this.ano; } }

public class teste { public static void main(String[] args) { // Criando a empresa Empresa emp = new Empresa(); emp.nomeEmpresa = "Gamei"; emp.cnpjEmpresa = "618.486.486-50";

// Imprime dados da empresa emp.mostraEmpresa();

// Criando Array

// Criando Funcionario F1 Funcionario F1 = new Funcionario(); F1.nome = "Octy"; F1.departamento = "Game Design"; F1.salario = 7000.00; F1.RG = "687.786.687-X"; F1.dataDeEntrada = new Data(); F1.dataDeEntrada.preencheData(05, 07, 2016);

// Imprime dados do funcionario F1 F1.mostraFuncionario();

// Criando Funcionario F2 Funcionario F2 = new Funcionario(); F2.nome = "Bya"; F2.departamento = "Assistente do Game Designer"; F2.salario = 4000.00; F2.RG = "486.354.456-Z"; F2.dataDeEntrada = new Data(); F2.dataDeEntrada.preencheData(12, 10, 2016);

// Imprime dados do funcionario F2 F2.mostraFuncionario();

emp.adiciona(F1); emp.adiciona(F2); for (Funcionario f : emp.empregados) { if (f!=null) { System.out.println(f.nome); } }

} } veja ai agora se da certo