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

Problema ao mostrar dados da array.

Essas minhas classes:

class Empresa {

    String nomeEmpresa;
    String cnpj;
    Funcionario[] empregados;
    int posicaoLivre = 0;



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

    void mostrando() {
        for (int i = 0; i < this.posicaoLivre; i++) {
            System.out.println("Funcionario da posição: " + i);
            System.out.println("Salário: R$ " + this.empregados[i].salario);
        }
    }
}
class TestaEmpresa {

    public static void main(String[] args) {

        Empresa empresa = new Empresa();

        for (int i = 0; i < 10; i++) {
            Funcionario f = new Funcionario();
            f.salario = 1000 * 2;
            empresa.adiciona(f);
        }

        empresa.mostrando();
    }
}
class Funcionario {

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

}

O problema é o seguinte, quando executo a classe TestaEmpresa me retorna o seguinte:

Funcionario da posição: 0
Exception in thread "main" java.lang.NullPointerException
        at Empresa.mostrando(Funcionario.java:23)
        at TestaEmpresa.main(Funcionario.java:65)

alguém sabe me dizer o que esta acontecendo, ou onde errei?

5 respostas

O erro ocorre no for, imagina 0 < 0 " zero menor que zero faça algo, por algum motivo a variável "posicaoLivre" não esta contando. ( antes de apresentar o erro o print diz que a variavel e zero "Funcionario da posição: 0" )

(int i = 0; i < 0; i++)

tenta alterar considerar esse cod :



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

Ops acredito que o erro esta na variavel i , ela deve ser declarada para usar fora do "for"..

 System.out.println("Funcionario da posição: " + i);

Quando retiro a linha: System.out.println("Salário: R$ " + this.empregados[i].salario); do método "mostrando" a contagem funciona normalmente:

Funcionario da posição: 0
Funcionario da posição: 1
Funcionario da posição: 2
Funcionario da posição: 3
Funcionario da posição: 4
Funcionario da posição: 5
Funcionario da posição: 6
Funcionario da posição: 7
Funcionario da posição: 8
Funcionario da posição: 9

Flávio, estou usando a variável i dentro do for

solução!

Problema resolvido, refiz tudo e comparei, o problema estava na classe TestaEmpresa:

Esta é a correta:

class TestaEmpresa {

    public static void main(String[] args) {

        Empresa empresa = new Empresa();
        empresa.empregados = new Funcionario[10];

        for (int i = 0; i < 10; i++) {
            Funcionario f = new Funcionario();
            f.salario = 1000 * 2;
            empresa.adiciona(f);
        }

        empresa.mostrando();
    }
}

Muito obrigado aos que tentaram me ajudar.