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

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

Meu código TestaEmpresa abaixo funcionou perfeitamente, mas porque se eu alterar as linhas de array de empregados começando com zero ná nullPointerException?

    empresa.empregados[0].mostra();
        empresa.empregados[1].mostra();
    class TestaEmpresa {

       public static void main (String[] args) {
        Empresa empresa = new Empresa();
        empresa.empregados = new Funcionario[10];
        Data dataEntrada = new Data();
          dataEntrada.preencheData(18,3,2016);

        Funcionario f1 = new Funcionario();
        f1.nomeFuncionario = "func1 silva";
        f1.salario = 1000;
        f1.dataEntrada=dataEntrada;
        if    (f1.dataEntrada != null){
           System.out.println(dataEntrada);
           } else{
               System.out.println("Erro ao apresentar a data1");
           } 
        empresa.adiciona(f1);

        Funcionario f2 = new Funcionario();
        f2.nomeFuncionario = "func2 silva";
        f2.salario = 1700;
        f2.dataEntrada=dataEntrada;
        if (f2.dataEntrada != null){
           System.out.println(dataEntrada);
        } else{
               System.out.println("Erro ao apresentar a data2");
            empresa.adiciona(f2);

           } 
        empresa.adiciona(f2);

        empresa.empregados[1].mostra();
        empresa.empregados[2].mostra();
       }
    }
2 respostas

Agnaldo, quando ele tenta chamar o método mostra, usando o índice 2 ele simplesmente não sabe o que fazer.

Os índices de um array em Java começa no 0. Para o compilador está tudo bem, porque o array tem 10 posições, de 0 à 9. Mas ao chamar na posição 2, que está nulo, ele não consegue mostrar. Ficou claro? Se tiver dúvida a gente continua a conversa.

Abraço!

solução!

Entendi o seu ponto de vista João, mas o que está ocorrendo é exatamente o inverso. O código que funciona é o que possui as linhas abaixo:

    empresa.empregados[1].mostra();
        empresa.empregados[2].mostra();

se eu coloco a linha

        empresa.empregados[0].mostra();

dá o erro de nullPointerException. Por via das dúvidas segue o código da classe Empresa com o método adiciona:

class Empresa {
    String nomeEmpresa;
    Funcionario[] empregados;
    String cnpj;
    int livre= 0;

    void adiciona(Funcionario f) {
        this.empregados[this.livre] = f;
        this.livre++;
    }
}

abraço!