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