Erro no Programa

1 resposta
Edu.Paz

Meu programa está apresentando esse problema em algumas linhas

Exception in thread “main” java.lang.NullPointerException
at cadastraempregados.Main.main(Main.java:48)

Esse é meu código:

Main

package cadastraempregados;

import javax.swing.JOptionPane;

/**
 *
 * @author Eduardo
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

    String menu[] = { "Cadastrar Empregado", "Cadastrar Dependente", "Modificar Salario",
    "Reajustar Salario" , "Vizualizar Dados" , "Sair"};
        int comando;
        CadastroDeEmpregados cadastroDeEmpregados = new CadastroDeEmpregados();
        Empregado empregado;

        while ((comando = JOptionPane.showOptionDialog(null,
                "Escolha uma opção", "Programa Cadastro de Funcionários",
                JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null,
                menu, null)) != 5) {
            switch (comando) {
            case 0:
                cadastroDeEmpregados.cadastrar();
                break;
            case 1:
                empregado = cadastroDeEmpregados.procurar();
                empregado.acrescentarDependente();
                break;
            case 2:
            	empregado = cadastroDeEmpregados.procurar();
            	empregado.modificarSalario();
                break;
            case 3:
                cadastroDeEmpregados.reajustarSalario();
                break;
            case 4:
            	empregado = cadastroDeEmpregados.procurar();
            	empregado.visualizar();
                break;
            case 5:
                System.exit(1);

            }
        }

	}

}

Classe Empregado

import java.util.Vector;

import javax.swing.JOptionPane;
import javax.swing.JTextArea;

public class Empregado {

    public String nome;
    public String telefone;
    public String endereco;
    public double salario;
    public Vector<Dependente> dependentes = new Vector<Dependente>();

    /** Creates a new instance of Empregado */
    public Empregado(String nome, String telefone, String endereco, double salario) {
        this.nome = nome;
        this.telefone = telefone;
        this.endereco = endereco;
        this.salario = salario;
    }

    public void modificarSalario(){
    	JOptionPane janela = new JOptionPane();
        String novoSalario = JOptionPane.showInputDialog("Informe o novo salario: ");
        this.salario = Double.parseDouble(novoSalario);
    }

    public void reajustarSalario(double percentual){
        this.salario = salario*(1+percentual/100);
    }

    public boolean acrescentarDependente(){

    	JOptionPane janela = new JOptionPane();
        String nomeDependente = JOptionPane.showInputDialog("Informe o nome do dependente: ");

    	Dependente dependente = new Dependente();
    	dependente.nome = nomeDependente;
        if(dependentes.add(dependente)){
        	return true;
        }
        return false;

    }

    public void visualizar(){

    	JOptionPane janela = new JOptionPane();
    	JTextArea saida = new JTextArea(0,20);
    	saida.append("Nome: " + this.nome
    			+ "\nTelefone: " + this.telefone
    			+ "\nEndereco: " + this.endereco
    			+ "\nSalario: " + this.salario);
    	if(dependentes.size() > 0){
    		saida.append("\nDependentes:");
    		for (int i = 0; i < dependentes.size(); i++) {
				saida.append("\n- " + dependentes.get(i).nome);
			}
    	}
    	JOptionPane.showMessageDialog(null,saida,"Saida",JOptionPane.PLAIN_MESSAGE);

    }

}

Classe Dependente

import javax.swing.JOptionPane;


public class Dependente {

    public String nome;

    /** Creates a new instance of Dependente */
    public Dependente() {
    }

    public void lerNome(){
        JOptionPane janela = new JOptionPane();
        this.nome = JOptionPane.showInputDialog("Informe o nome do dependente: ");
    }
}

Classe Cadastro de Empregados

package cadastraempregados;

import java.util.ArrayList;
import java.util.Vector;

import javax.swing.JOptionPane;

public class CadastroDeEmpregados {

	Vector<Empregado> empregados = new Vector<Empregado>();

	public boolean cadastrar(){
        JOptionPane janela = new JOptionPane();
        String nome = JOptionPane.showInputDialog("Informe o nome do empregado: ");
        String telefone = JOptionPane.showInputDialog("Informe o telefone: ");
        String endereco = JOptionPane.showInputDialog("Informe o endereco: ");
        String salario = JOptionPane.showInputDialog("Informe o salário: ");
        Empregado empregado = new Empregado(nome,telefone,endereco,Double.parseDouble(salario));

        if(empregados.add(empregado)){
        	return true;
        } else {
        	return false;
        }

	}

	public Empregado procurar(){

        JOptionPane janela = new JOptionPane();
        String nome = JOptionPane.showInputDialog("Informe o nome do empregado: ");

		for (int i = 0; i < empregados.size(); i++) {
			if (empregados.get(i).nome.equalsIgnoreCase(nome)) {
				return (Empregado) empregados.get(i);
			}
		}

		return null;
	}

	public void reajustarSalario(){

		JOptionPane janela = new JOptionPane();
        String percentual = JOptionPane.showInputDialog("Informe o percentual: ");

		for (int i = 0; i < empregados.size(); i++) {
			empregados.get(i).reajustarSalario(Double.parseDouble(percentual));
		}
	}

}

Alguém poderia me dizer aonde estou errando para evitar esse tipo de erro

Obrigado

1 Resposta

blackfalcon

Bem, nao li o seu codigo para te falar com certeza, mas esse erro de NullPointerException é causado quando voce tenta acessar um objeto nulo. Como voce ve, o erro é na linha 48:

Agora, eu vi que voce criou dois objetos com nome quase parecido: empregados e empregado. Veja se voce nao confundiu eles amigo.

Leia isso tambem: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/NullPointerException.html

Abraços

Criado 16 de maio de 2010
Ultima resposta 16 de mai. de 2010
Respostas 1
Participantes 2