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

Dúvidas em relação ao Null

Estou executando o código TestaEmpresa, porém n consigo executar já que alguma váriavel está null.

"Exception in thread "main" java.lang.NullPointerException at Empresa.mostraEmpregados(Funcionario.java:36) at TestaEmpresa.main(TestaEmpresa.java:31)"

class TestaEmpresa { public static void main(String[] args) { Empresa ACME = new Empresa(); ACME.funcionarios = new Funcionario[10];

Funcionario f1 = new Funcionario(); f1.salario = 1000; f1.dataEntrada = new Data(); ACME.adicionar(f1);

Funcionario f2 = new Funcionario(); f2.salario = 1700; f2.dataEntrada = new Data(); ACME.adicionar(f2);

Funcionario f3 = new Funcionario(); f2.salario = 2300; f2.dataEntrada = new Data(); ACME.adicionar(f3);

Funcionario f4 = new Funcionario(); f2.salario = 2700; f2.dataEntrada = new Data(); ACME.adicionar(f4);

Funcionario f5 = new Funcionario(); f2.salario = 3500; f2.dataEntrada = new Data(); ACME.adicionar(f5);

ACME.mostraEmpregados(); } }

class Empresa { String nome; String CNPJ; Funcionario[] funcionarios; int contador = 1;

void adicionar(Funcionario f) { this.funcionarios[this.contador] = f; contador++; }

void mostraEmpregados(){ for (int i = 0; i < funcionarios.length; i++){ System.out.println("Funcionario nº " + i); System.out.println("Salário = R$" + this.funcionarios[i].salario); }

} }

2 respostas
solução!

Olá Felipe, para funcionar o seu código vamos fazer alguns pequenos acertos. Primeiro para o erro que está estourando basta você substituir a declaração do contador para =0, ficando dessa forma

int contador = 0;

Isso deve ser feito pois todo vetor em java começa na posição 0, e ao declarar 1 seu programa colocava nulo na posição 0 e assim aparece esse erro que você informou.

Porém, após essa sua correção, ao rodar você verá que irá aparecer um segundo erro, também parecido, esse erro ocorre pois você criou um vetor de funcionários na classe empresa com o tamanho 10, e na hora de imprimir você pede para o sistema ir até a última posição do vetor, porém quando chega na posição 5 ele é nulo novamente, e assim vem o erro, para corrigir esse problema há várias formas, porém a mais simples que achei seria, ao invés de você usar o funcionarios.lengthpassar a usar a variável contador, afinal, ela está lá para contar quantos funcionários existem, então ficou assim:

for (int i = 0; i < contador; i++) {

O último problema que encontrei é foi, talvez, uma pequena falta de atenção em um copiar colar, coisa absolutamente normal, você está criando um novo funcionário aqui Funcionario f4 = new Funcionario();, por exemplo, e aqui você está adicionando ele à empresa ACME.adicionar(f4);, porém todos os seus funcionários, desde o f3 você está passando o salário e a data para o funcionário f2, basta acertar e passar para todos os demais.

Eu não acheguei a testar a classe Data, eu só criei para testar mas não passei valor algum para ela, caso tenha algum problema me avise.

Espero ter ajudado.

Numa cajadada vc matou todas as minhas dúvidas. Muito obrigado pela sua atenção. Esclareceu todas da maneira mais didática possível. Muito grato.