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

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

A minha classe TesteEmpresa não está compilando:

A minha classe Empresa ficou assim:

class Empresa{ String nome; String cnpj; Funcionario[] funcionariosEmpresa;

void adiciona(Funcionario f){ for(int i = 0; i < 5; i++){ if(this.funcionariosEmpresa[i] == null){ this.funcionariosEmpresa[i] = f; } } }

A minha classe TesteEmpresa ficou assim: class TesteEmpresa{

public static void main(String[] args){

Empresa empresa = new Empresa(); empresa.funcionariosEmpresa = new Funcionario[15];

for (int i = 0; i < 5; i++) { Funcionario f = new Funcionario(); f.salario = 1000 + i * 100; f.nome = "Mari Linda"; f.departamento = "DBA"; empresa.adiciona(f); empresa.funcionariosEmpresa[i].mostra(); }

} }

Ocorre essa mensagem de erro: Exception in thread "main" java.lang.NullPointerException at Funcionario.mostra(Funcionario.java:20) at TesteEmpresa.main(TesteEmpresa.java:14)

10 respostas

Maria, posta todas as classes do seu projeto com o código formatado!

Você pode focar o código colocando três crases antes do código e tres crases depois do código..

``` 3 crases assim ta vendo? antes e depois do código.

A minha classe empresa:

```class Empresa{ String nome; String cnpj; Funcionario[] funcionariosEmpresa;

void adiciona(Funcionario f){ for(int i = 0; i < 5; i++){ if(this.funcionariosEmpresa[i] == null){ this.funcionariosEmpresa[i] = f; } } } }````

A minha classe TesteEmpresa:

```class TesteEmpresa{

public static void main(String[] args){

Empresa empresa = new Empresa(); empresa.funcionariosEmpresa = new Funcionario[15];

for (int i = 0; i < 5; i++) { Funcionario f = new Funcionario(); f.salario = 1000 + i * 100; f.nome = "Mari Linda"; f.departamento = "DBA"; empresa.adiciona(f); empresa.funcionariosEmpresa[i].mostra(); }

} }```

```class Empresa{ String nome; String cnpj; Funcionario[] funcionariosEmpresa;

void adiciona(Funcionario f){ for(int i = 0; i < 5; i++){ if(this.funcionariosEmpresa[i] == null){ this.funcionariosEmpresa[i] = f; } } } }```

Vc consegue visualizar melhor Felipe, pra mim continua a mesma coisa?

Você fez certo, só dar um enter agora antes e depois que vai funcionar. Enter antes de class Empresa e depois da ultima chave! ;)

Oi Mariana, o que está ocorrendo é um nullPointer na linha 20 da sua classe Funcionario:

"Exception in thread "main" java.lang.NullPointerException at Funcionario.mostra(Funcionario.java:20) "

Seu código está correto, só notei uma chave a menos na classe Empresa mas pode ter sido na hora de postar. Da uma revisada na tua classe Funcionario. Em todo caso segue uma implementação bem simples mas que resolve o problema.

public class Funcionario {

    public String nome;
    public String departamento;
    public double salario;

    public void mostra() {
        System.out.println("Nome: " + this.nome);
        System.out.println("departamento: " + this.departamento);
        System.out.println("Salário: " + this.salario);
    }
}

java.lang.NullPointerException at Funcionario.mostra(Funcionario.java:20) .

Ela tá tentando mostrar algo que ainda tá null! Por isso ela tem que postar o código formatado e todas as classes!

Classe Empresa: ''' class Funcionario{

String nome; String departamento; double salario; Data dataEntrada; String rg;

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

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

void mostra() { System.out.println("Nome: " + this.nome); System.out.println("Departamento: " + this.departamento); System.out.println("Dia: " + this.dataEntrada.dia); System.out.println("Mes: " + this.dataEntrada.mes); System.out.println("Ano: " + this.dataEntrada.ano); System.out.println("Nome: " + this.rg); System.out.println("Data de entrada: " + this.dataEntrada.getFormatada(this.dataEntrada.dia, this.dataEntrada.mes, this.dataEntrada.ano)); } }

class Empresa{

String nome; String cnpj; Funcionario[] funcionariosEmpresa;

void adiciona(Funcionario f){ for(int i = 0; i < 5; i++){ if(this.funcionariosEmpresa[i] == null){ this.funcionariosEmpresa[i] = f; } } } } '''

Classe TesteEmpresa: ''' class TesteEmpresa{

public static void main(String[] args){

Empresa empresa = new Empresa(); empresa.funcionariosEmpresa = new Funcionario[15];

for (int i = 0; i < 5; i++) { Funcionario f = new Funcionario(); f.salario = 1000 + i * 100; f.nome = "Mari Linda"; f.departamento = "DBA"; empresa.adiciona(f); empresa.funcionariosEmpresa[i].mostra(); }

} }

solução!

Mariana, o problema é simples:

Na sua classe de teste você não está passando nenhuma data, porém no método mostra() de sua classe Funcionario você tenta imprimir uma data que não foi passada ou seja, está nula, por isso está dando nullPointerException.

tenta passar a data:

for (int i = 0; i < 5; i++) { 
    Funcionario f = new Funcionario(); 
    f.salario = 1000 + i * 100; 
    f.nome = "Mari Linda"; 
    f.departamento = "DBA"; 
    f.dataEntrada.dia = 1;
    f.dataEntrada.mes = 1;
    f.dataEntrada.ano = 2015;
    empresa.adiciona(f); 
    empresa.funcionariosEmpresa[i].mostra(); 
}

Acabei de descobrir isso João....kkkkkkk Já ia postar aqui quando recebi sua resposta. Mesmo assim obrigada!