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

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

Na verdade nao entendi exatamente meu erro. Quando tento rodas ele aparece a mensagem "Exception in thread "main" java.lang.NullPointerException at TestaEmpresa.main(TestaEmpresa.java:48)"

public class TestaEmpresa {

public static void main(String[] args) { // TODO Auto-generated method stub Empresa Apple = new Empresa(); Apple.empregado = new Funcionario[15];

Funcionario f1 = new Funcionario(); f1.nome = "Joao do Pao"; f1.departamento = "Packaging"; f1.salario = 1000; f1.dataDeEntrada = new Data(); f1.dataDeEntrada.dataDeInicio(1, 2, 2015);

Funcionario f2 = new Funcionario(); f2.nome = "Teste"; f2.departamento = "Testes"; f2.salario = 1000; f2.dataDeEntrada = new Data(); f2.dataDeEntrada.dataDeInicio(2, 4, 2015);

Apple.adiciona(f1); Apple.adiciona(f2);

Apple.empregado[0].mostra(); Apple.empregado[1].mostra();

}

}

Minha classe Empresa esta separada em outro arquivo .java

public class Empresa { String nome; String CNPJ; Funcionario[] empregado;

void adiciona(Funcionario f) { for (int i = 1; i < this.empregado.length; i++) { if (this.empregado[i] == null) { this.empregado[i] = f; } } } }

Se eu altero o final da minha classe TestaEmpresa para

Apple.empregado[1].mostra(); Apple.empregado[2].mostra();

Ele nao da erro mas apresenta o mesmo resultado na compilação conforme mostrado abaixo

Nome: Joao do Pao Salario: 1000.0 Data de Inicio: 1/2/2015 RG: null Departamento: Packaging

Nome: Joao do Pao Salario: 1000.0 Data de Inicio: 1/2/2015 RG: null Departamento: Packaging

7 respostas

Olá, José.

Eu até tentei encontrar alguma coisa, mas está muito difícil ler o código da maneira como ele está formatado. Você poderia postá-lo novamente entre `` ` ? Vai ficar mais fácil para quem tentar de ajudar.

(entre três acentos graves)

Acabo de perceber que as caixas de código não estão funcionando corretamente hoje, e os ` não estão abrindo a caixa de código. Então sugiro que cole o código no https://bpaste.net (lembrando de marcar o campo 'expiry' para 'never', para evittar que o código seja apagado do site no futuro).

Ola Skywalker

segue link https://bpaste.net/show/cee5003233fe

reeditei ele na mao pois nao estou na minha maquina de estudo, mas acredito q esta tudo certo e vai dar pra ver agora. obrigado

Entao, consegui resolver o ultimo problema mencionado que era de alterar o final da minha classe TestaEmpresa para

Apple.empregado[1].mostra();

Apple.empregado[2].mostra();

e ele duplicar o valor, para resolver isso apenas adicionei um "break" ao final do meu metodo "adiciona"

https://bpaste.net/show/d353ae111c6b

no entanto, caso eu mantenha o correto que seria

Apple.empregado[0].mostra();

Apple.empregado[1].mostra();

Ainda recebo o mesmo erro

"Exception in thread "main" java.lang.NullPointerException at TestaEmpresa.main(TestaEmpresa.java:26)"

solução!

Ok, entendi. O seu loop de adicionar funcionários não começa na posição 0, mas sim na posição 1, e por isso você recebe uma NullPointerException quando tenta acessar a posição 0.

"for (int i = 1; i < this.empregado.length; i++) "

mude para "int i = 0" que isso deve parar de acontecer.

Maravilha, era isso mesmo. Obrigado =)