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

erro exerício j

Boa noite pessoal para resolver o exercício 5, fiz a seguinte classe:

package java_primeiros_passos;


public class TestaEmpresa {

    public static void main(String[] args) {
        Empresa empresa = new Empresa();
        empresa.empregados = new Funcionario[10];
        Funcionario f1 = new Funcionario();
        f1.salario = 1000;
        f1.dataEntrada = new Data();
        empresa.adiciona(f1);
        for (int i = 0; i < 5; i++) {
            Funcionario f = new Funcionario();
            f.salario = 1000 + i * 100;
            empresa.adiciona(f);
            empresa.empregados[0].mostra();
            empresa.empregados[1].mostra();
        }
    }

}

Porémao pedir para compilar, recebo a seguinte mensagem no console:

data de entrada: 0/0/0Exception in thread "main" 
java.lang.NullPointerException
    at java_primeiros_passos.Funcionario.mostra(Funcionario.java:17)
    at java_primeiros_passos.TestaEmpresa.main(TestaEmpresa.java:17)

Poderiam me ajudar?

Desde já muito obrigado.

5 respostas

Jean, editei seu código pra ficar legível. Sempre coloca o codigo dentro dasa ```fica mais fácil pra enteder e você ser ajudado

Coloca o código da classe funcionario

Desculpe Vânia pela forma que coloquei o código, sou deficiente visual e ao clicar no botão inserir código pensei que tivesse ok.

package java_primeiros_passos;

public class Funcionario {
String nome;
String departamento;
double salario;
Data dataEntrada;

String rg;
void recebeAumento (double aumento) {
    salario += aumento;
}
double calculaGanhoAnual () {
    return salario * 12;
}
void mostra() {
    System.out.println("data de entrada: " + dataEntrada.getFormatada());
}
}
solução!

Jean, esse NullPointerException é porque você tá querendo imprimir da data de um empregado

empresa.empregados[1].mostra();

sendo que voce não criou nenhuma instancia pra data. no for voce so criou o salário e adicionou os funcionários a empresa

dentro do seu for você precisa colocar

f.dataEntrada = new Data();

outra observação: Se voce quiser mostrar so dados dos funcionários que você ta criando dentro do for tem que colocar

empresa.empregados[i].mostra();

o i vai deixar o mostra dinâmico.

Do jeito que voce tá fazendo ele vai imprimir 5 vezes os dados do funcionário 0 e do funcionário 1.

    public static void main(String[] args) {
        Empresa empresa = new Empresa();
        empresa.empregados = new Funcionario[10];
        Funcionario f1 = new Funcionario();
        f1.salario = 1000;
        f1.dataEntrada = new Data();
        empresa.adiciona(f1);

        for (int i = 1; i < 5; i++) {
            Funcionario f = new Funcionario();
            f.salario = 1000 + i * 100;
            f.dataEntrada = new Data();
            empresa.adiciona(f);
            empresa.empregados[i].mostra();
        }

Oi Jean, você conseguiu resolver a dúvida?