Erro Simples (Iniciante)

Olá Pessoal.
É o seguinte, fiz um programa(não terminado) que cadastra um funcionário e gera um relatorio, esta cadastrando normal, porém quando vou gerar o relatório de funcionário aparece um erro finalizando o programa.
O erro é o seguinte:

run:
Exception in thread “main” java.lang.NullPointerException
at Principal.geraRelatorio(Principal.java:31)
at Principal.main(Principal.java:57)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 41 segundos)

Se possível, peço a ajuda dos colegas para resolver esse problema

O código é o seguinte:

[code]import javax.swing.JOptionPane;
import java.text.NumberFormat;

public class Principal{
private Funcionario funcionario[];
private int cont;

public Principal(){
    this.funcionario = new Funcionario[10];
    this.cont = 0;
}

public void cadastraFuncionario(){
    if (this.cont < this.funcionario.length){
        int cod = Integer.parseInt(JOptionPane.showInputDialog("Código: "));
        String nome = JOptionPane.showInputDialog("Nome: ");
        String dataNasc = JOptionPane.showInputDialog("Data de Nascimento: ");
        String cpf = JOptionPane.showInputDialog("C.P.F: ");
        String email = JOptionPane.showInputDialog("Email: ");
        String dataCont = JOptionPane.showInputDialog("Data de Contratação: ");
        double salario = Double.parseDouble(JOptionPane.showInputDialog("Salário: "));
        this.cont++;
    }
}

   public void geraRelatorio(){
    String resultado = "";
    NumberFormat format = NumberFormat.getCurrencyInstance();
    format.setMaximumFractionDigits(2);
    for (int i = 0; i < cont; i++){
        resultado = resultado + "Nome:" + this.funcionario[i].getNome() + " - " + format.format(this.funcionario[i].getSalario()) + "\n";
    }
    if (cont > 0)
        JOptionPane.showMessageDialog(null, resultado);
    else
        JOptionPane.showMessageDialog(null, "VETOR VAZIO!", "SISTEMA EMPRESA 1", JOptionPane.INFORMATION_MESSAGE);
    }

    public static void main(String[] args){
        int op = 0;

        Principal principal = new Principal();

        do
        {
            op = Integer.parseInt(JOptionPane.showInputDialog("Escolha sua Opção:"
                    + "\n\n1 - Cadastrar Cliente\n2 - Cadastrar Funcionário" +
                    "\n3 - Gerar Relatório Cliente\n4 - Gerar Relatório Funcionário" +
                    "\n10 - Sair do Sistema"));

            switch(op)
            {
                case 2:
                    principal.cadastraFuncionario();
                break;
                case 4:
                    principal.geraRelatorio();
            }
        }
        while(op != 10);
    }
}

[/code]

Desde já agradeço!

Cara eu nao olhei direito o seu codigo, mas posso te adiantar que frequentemente essa excessao aparece quando vc passa um argumento null, quer dizer alguma informaçao que vc esteja trabalhando pode não estar chegando ou pq nao existe(se caso esteja assim no banco) ou pq simplesmente ela nao esta sendo carregada e ao invés dela chega null.

entedestes?? :slight_smile:

Ola,

eh exatamente oque o JavaMania disse, ta vendo no erro a primeira e a segunda linha onde negritei :

Exception in thread “main” java.lang.NullPointerException
at Principal.geraRelatorio(Principal.java:31)
at Principal.main(Principal.java:57)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 41 segundos)

diz que eh um NullPointerException e o erro esta na linha 31 , entao creio de dois um : ou o problema vem da String resultado ou provavelmente a classe Funcionario que nao tem o codigo ai postado esta vindo como null assim de uma avaliada nessas duas opcoes.

flw.