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

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

Recebo a seguinte mensagem quando tento executar o programa: Exeption in thread "main" java.lang.NullPointerExeption at Funcionario.mostra(funcionario.java:20)at programa.main(testa_empresa.java:13)

classe Empresa: ``` class Empresa{ String nome; String cnpj; Funcionario[] funcionarios; int quantFuncionarios = 0;

void adiciona(Funcionario f){ this.funcionarios[this.quantFuncionarios] = f; this.quantFuncionarios++; } }classe Funcionario: class Funcionario{ String departamento; String funcao; String nome; double salario; Data dataAdmissao; String rg;

...

void mostra(){ System.out.println("Salário: R$ "+salario); } //L20 }``` classe programa: class programa{ public static void main(String[] args){ Empresa e1 = new Empresa(); e1.funcionarios = new Funcionario[10]; Funcionario f1 = new Funcionario(); f1.nome = "Rafael"; f1.salario =10000; e1.adiciona(f1); Funcionario f2 = new Funcionario(); f2.salario = 23000; f2.nome = "Augusto"; e1.adiciona(f2); e1.funcionarios[0].mostra(); //L13 } }

9 respostas

Coloca esse código pra ver se resolve.

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

Nada.

Posta as classes com o código formatado. Que vejo uma solução!

Cara me diz como faço para colar ela formatada. eu tentei usa os backticks e talz mas nao funcionou.

solução!
class Funcionario{
    String departamento;
    String funcao;
    String nome;
    double salario;
    Data dataAdmissao;
    String rg;    

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

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

    void mostra(){
        System.out.println("Salário: R$ "+salario);
        }

}

class Data{
    int dia; 
    int mes;
    int ano;
    void escreveData(int d, int m, int a){
        this.dia = d;
        this.mes = m;
        this.ano = a;
    }
    String getFormatada(){
        return dia + "/"+mes+"/"+ano;
    }
}

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

    void adiciona(Funcionario f){
        this.funcionarios[this.quantFuncionarios] = f;
        this.quantFuncionarios++;
    }
}

class programa{
    public static void main(String[] args){
        Empresa e1 = new Empresa();
        e1.funcionarios = new Funcionario[10];
        e1.funcionarios[0] = new Funcionario();
        Funcionario f1 = new Funcionario();
        f1.nome = "Rafael";
        f1.salario =10000;
        f1.departamento = "Diretoria";
        f1.funcao = "funçao";
        f1.dataAdmissao = new Data(); //essa linha solucionou
        f1.dataAdmissao.escreveData(10,11,2010);
        f1.rg = "1111-2222";
        e1.adiciona(f1);
        Funcionario f2 = new Funcionario();
        f2.salario = 23000;
        f2.nome = "Augusto";
        f2.dataAdmissao = new Data(); //essa linha solucionou
        f2.dataAdmissao.escreveData(01,05,2000);
        e1.adiciona(f2);        
        e1.funcionarios[1].mostra();        
    }
}

Achei a falha

e1.funcionarios[0].nome = "Rafael";

hahahahahaha!

Ñ o problema resolveu criando uma data pra classe funcionarios

Olá Rafael, parabéns por ter solucionado seu problema.

Vou fechar este tópico. Caso necessário, sinta-se a vontade para abrir outro!

Abraços!

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