Bom Dia!
Sou Novo por aqui, e ainda bem “verde” em programação JAVA, estou tendo problema com gravação de arquivos… segue o meu codigo:
[code]package cadastrovector;
import javax.swing.*;
import java.util.Vector;
public class CadastroVector {
public static void main(String[] args) {
String menu[] = {"Cria Empregado", "Insere Dependente", "Modifica Salario","Reajusta Salario","Visualiza Dados","Sair do Programa"};
int comando = 0;
int i = 0;
String nome = "";
String telefone = "";
String endereco = "";
String salario = "";
String dependente;
double doubleSalario = 0;
cadastro dados = new cadastro();
try{
dados.recuperaCadastro();
} catch (Exception exc) {
System.out.println("Erro ao abrir o arquivo.");
}
while ((comando = JOptionPane.showOptionDialog(null, "Escolha uma opção", "Programa Cadastro Empregado",
JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, menu, null)) != 5) {
switch (comando) {
case 0:
try{
nome = JOptionPane.showInputDialog("Digite o nome: ");
telefone = JOptionPane.showInputDialog("Digite o telefone: ");
endereco = JOptionPane.showInputDialog("Digite o endereco: ");
salario = JOptionPane.showInputDialog("Digite o salario: ");
doubleSalario = Double.parseDouble(salario);
dados.addEmpregado(nome, telefone, endereco, doubleSalario);
}catch (Exception exc){
JOptionPane.showMessageDialog(null, exc.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
break;
case 1:
nome = JOptionPane.showInputDialog("Informe nome do empregado:");
if (dados.verificaNome(nome)){
dependente = JOptionPane.showInputDialog("Informe nome do dependente:");
dados.recebeDependente(dependente,nome);
}
break;
case 2:
nome = JOptionPane.showInputDialog("Insira o nome do Empregado: ");
if (dados.verificaNome(nome)){
salario = JOptionPane.showInputDialog("Informe novo salario:");
doubleSalario = Double.parseDouble(salario);
dados.modificaSalario(nome, doubleSalario);
}else{
JOptionPane.showMessageDialog(null,"Empregado nao encontrado");
}
break;
case 3:
salario = JOptionPane.showInputDialog("Digite a porcentagem de aumento:");
doubleSalario = Double.parseDouble(salario);
dados.reajusteEmpregados(doubleSalario);
break;
case 4:
nome = JOptionPane.showInputDialog("Insira o nome do Empregado");
dados.mostraEmpregado(nome);
break;
case 5:
System.exit(1);
}
}
}
}
[/code]
package cadastrovector;
import java.util.*;
import javax.swing.*;
import java.io.*;
public class cadastro {
private final String arquivo = "empregados.dat";
Vector<empregado> listaEmpregados = new Vector<empregado>();
public void addEmpregado(String nome, String fone, String endereco, double salario) throws Exception {
try{
listaEmpregados.add(new empregado(nome, fone, endereco, salario));
JOptionPane.showMessageDialog(null,"Empregado cadastrado com sucesso!");
gravaCadastro();
}
catch(ArrayIndexOutOfBoundsException exception){
System.out.println("Limite de Empregados atingido" + exception);
}
}
public boolean verificaNome(String nome){
int i;
for (i=0;i<listaEmpregados.size();i++){
empregado c = (empregado) listaEmpregados.get(i);
if (nome.equalsIgnoreCase(c.nomeEmpregado)){
return true;
}
}
return false;
}
public void reajusteEmpregados (Double porcentagem){
empregado e;
for (int i = 0; i >< listaEmpregados.size(); i++) {
e = listaEmpregados.get(i);
e.salarioEmpregado = e.salarioEmpregado + (((e.salarioEmpregado)/100)*porcentagem);
listaEmpregados.set(i, e);
}
JOptionPane.showMessageDialog(null, "Salarios reajustados com Sucesso!");
}
public void recebeDependente(String dependente, String nome){
int i;
for (i=0;i<listaEmpregados.size();i++){
empregado c;
c=listaEmpregados.get(i);
if (nome.equalsIgnoreCase(c.nomeEmpregado)){
c.addDependente(dependente);
}
}
}
public boolean modificaSalario (String nome, double salario){
empregado e;
for(int i = 0; i><=listaEmpregados.size(); i++){
e = listaEmpregados.get(i);
if(e.nomeEmpregado.equalsIgnoreCase(nome)){
e.salarioEmpregado = salario;
listaEmpregados.set(i, e);
return true;
}
}
return false;
}
public void aaamostraEmpregado(String nome){
int i;
JTextArea saidaTela = new JTextArea(25,25);
for (i=0;i<listaEmpregados.size();i++){
empregado c;
c = listaEmpregados.get(i);
saidaTela.append("["+(i+1)+"]" + " NOME: " + c.nomeEmpregado +
"\n" + "TELEFONE: " + c.foneEmpregado +
"\n" + "ENDERECO: " + c.enderecoEmpregado +
"\n" + "SALARIO: " + c.salarioEmpregado +
"\n" + "DEPENDENTES: " + c.mostraDependentes() + "\n\n\n");
}
JOptionPane.showMessageDialog(null,saidaTela);
}
public void mostraEmpregado(String nome){
int i;
JTextArea saidaTela = new JTextArea(25,25);
for (i=0;i<listaEmpregados.size();i++){
empregado c;
c = listaEmpregados.get(i);
if (c.nomeEmpregado.equalsIgnoreCase(nome)){
saidaTela.append("["+(i+1)+"]" + " NOME: " + c.nomeEmpregado +
"\n" + "TELEFONE: " + c.foneEmpregado +
"\n" + "ENDERECO: " + c.enderecoEmpregado +
"\n" + "SALARIO: " + c.salarioEmpregado +
"\n" + "DEPENDENTES: " + c.mostraDependentes());
}
}
JOptionPane.showMessageDialog(null,saidaTela);
}
public void gravaCadastro() throws Exception {
FileOutputStream objFileOS = new FileOutputStream(arquivo);
ObjectOutputStream objOS = new ObjectOutputStream(objFileOS);
objOS.writeObject(listaEmpregados);
objOS.flush();
objOS.close();
}
public void recuperaCadastro() throws Exception {
File objFile = new File(arquivo);
if (objFile.exists()) {
FileInputStream objFileIS = new FileInputStream(arquivo);
ObjectInputStream objIS = new ObjectInputStream(objFileIS);
listaEmpregados = (Vector)objIS.readObject();
objIS.close();
}
}
}
package cadastrovector;
public class dependente{
String nomeDependente = "";
public dependente(String nomeDependente){
this.nomeDependente = nomeDependente;
}
}
package cadastrovector;
import java.util.Vector;
import javax.swing.*;
public class empregado extends cadastro {
String nomeEmpregado;
String foneEmpregado;
String enderecoEmpregado;
double salarioEmpregado;
Vector><dependente> listaDependentes = new Vector<dependente>();
public empregado(String nome, String telefone, String endereco, Double salario){
this.nomeEmpregado = nome;
this.foneEmpregado = telefone;
this.enderecoEmpregado = endereco;
this.salarioEmpregado = salario;
}
public void addDependente (String dependente){
listaDependentes.add(new dependente (dependente));
}
public String mostraDependentes(){
int i;
String stringDependentes = "";
for (i=0;i<listaDependentes.size();i++){
dependente d = (dependente) listaDependentes.get(i);
stringDependentes += "\n" + d.nomeDependente + "; ";
}
return stringDependentes;
}
}
me retorna erro logo ao adicionar um empregado…
Alguma dica?
Agradeço desde ja!
>