Gravar no vector

e ai beleza … sou novo em programação … então não exijam muito de mim ok?

to com um probleminha to fazendo um trablho para a facul ,
o problema é o seguinte :
o vector da minha classe esta gravando sempre o ultimo argumento em todas as posiçoes anteriores e na que elea deveria estar tbm ???
Aqui esta o metodo de cadastro… (Soh para explicar o b é outra classe e dentro dele tem um vector que se chama periodic)

     public void Cadastro(){
        	Periodico p=new Periodico();
        	Usuario u=new Usuario();
        	int op = 0; 
        	boolean valida=true;	
         while (op!=3 || valida){
        	try{
        	 op=Integer.parseInt(JOptionPane.showInputDialog("Escolha a opção para cadastrar:  \n 1- Periódico \n 2-Usuário " 
                                                              +"\n 3-Voltar ao menu anterior"));
        	 switch (op){
        	   case 1:
        	         p.Solicitar();
        	         for (int i=0;i<b.getPeriodic().size();i++){
          	           if (p.getCod()==b.getPeriodic().elementAt(i).getCod())
          	        	 p.setCod((int) (1000+Math.random()*99999));
          	         }
        	         getB().getPeriodic().add(b.getPeriodic().size(), p);
        		   break;
        	   case 2:
                	  u.Solicitar();
                	  for (int i=0;i<b.getUsers().size();i++){
             	         if (u.getMatricula()==b.getUsers().elementAt(i).getMatricula())
             	        	 u.setMatricula((int) (1000+Math.random()*9999));
             	         }
                	  getB().getUsers().add(u);
                   break;
        	   case 3:return; 
        	   default: JOptionPane.showMessageDialog(null,"Opção Inválida !!!");
        	 }        
            }catch (Exception ex){
        	  JOptionPane.showMessageDialog(null,"Opção Inválida !!! ");
              valida =false;
           }
          }
		 }  

EDIT (Moderador) - Por favor, ponha as tags [ code ]

bem vindo
para começar uma dica coloque seus codigos entre as tags ‘ ’ para que fique formatado e mais facil de se ler, e nao entendi direito suas duvida, ele esta gravando em todas as posicoes do vetor o mesmo valor?

manda as outras classe!

nao tem como imaginar o que vc esta querendo fazer!

ok … ai estão elas :
periodico:

      import java.util.Vector;
import javax.swing.JOptionPane;


public class Periodico extends Historico{
  private int cod;
  private String titulo;
  private String autor;
  private boolean emprestado;
  private Vector<Historico> movimentacao;
     
      public Periodico(){
    	  super();
    	  setCod(0);
    	  setAutor(null);
    	  setTitulo(null);
    	  setEmprestado(false);
          setMovimentacao(new Vector<Historico>());
      }
      
      public boolean getEmprestado() {return emprestado;}
      public void setEmprestado(boolean emprestado) {this.emprestado = emprestado;}
      public int getCod() {return cod;}
      public void setCod(int cod) {this.cod = cod;}
      public String getTitulo() {return titulo;}
      public void setTitulo(String titulo) {this.titulo = titulo;}
      public String getAutor() {return autor;}
      public void setAutor(String autor) {this.autor = autor;}
  	  public void setMovimentacao(Vector<Historico> movimentacao) {this.movimentacao = movimentacao;}
	  public Vector<Historico> getMovimentacao() {return movimentacao;}
      
	  public String toString(){
    	  return "Código: "+getCod()+
    	         "\n Título: "+getTitulo()+
    	         "\n Autor: "+getAutor();
    
      }
      public String listarMovimentação(){
    	 String  saida=null;
    	  for (int i=0; i<movimentacao.size();i++){
    		  saida+= movimentacao.elementAt(i).toString();
    	  }
    	  return saida;
    	 }
      public void Solicitar() {
    	  setTitulo(JOptionPane.showInputDialog("Título:"));
    	  setAutor(JOptionPane.showInputDialog("Autor: "));
    	  setCod((int) (1000+Math.random()*9999));    
      }

}

classe usuario

import javax.swing.JOptionPane;
public class Usuario {
   private int Matricula;
   private String Nome;
   private boolean pendente;
   
     public Usuario(){
	    setMatricula(0);
	    setNome(null);
	    setPendente(false);
       }
     
     public boolean getPendente() {return pendente;}
     public void setPendente(boolean pendente) {this.pendente = pendente;}
     public int getMatricula() {return Matricula;}
     public void setMatricula(int matricula) {Matricula = matricula;}
     public String getNome() {return Nome;}
     public void setNome(String nome) {Nome = nome;}
     
     public void Solicitar(){
	   setNome(JOptionPane.showInputDialog("Nome:"));
  	   setMatricula((int) (1000+Math.random()*9999));
     }
     public String toString(){
	  return "Nome: "+getNome()+
	         "\n Matrícula: "+getMatricula();
     }

}

E A BIBLIOTECa

import java.util.Vector;
import javax.swing.JOptionPane;



public class Biblioteca {
    private Vector <Usuario> users;
    private Vector<Periodico> periodic;
	    public Biblioteca(){
        	setPeriodic(new Vector<Periodico>());
        	setUsers(new Vector<Usuario>());
        }
	    
        public Vector<Usuario> getUsers() {return users;}
	    public void setUsers(Vector<Usuario> users) {this.users = users;}
	    public Vector<Periodico> getPeriodic() {return periodic;}
	    public void setPeriodic(Vector<Periodico> periodic) {this.periodic = periodic;}
		
		public void Emprestimo(){
		  Historico h=new Historico();
		  try{ 
		   int aux=periodic.indexOf(Integer.parseInt(JOptionPane.showInputDialog("Insira o código do aluno: ")));
		   int aux2=users.indexOf(Integer.parseInt(JOptionPane.showInputDialog("Insira o código do livro para ser emprestado: ")));
		     if (aux2>=0 && periodic.elementAt(aux2).getEmprestado()!= true){
			    if (aux>=0 && users.elementAt(aux).getPendente()!=true){
				   int pos=(periodic.elementAt(aux).getMovimentacao().size())-1;
				   h.Solicitar(users.elementAt(aux).getNome());
				   periodic.elementAt(aux).getMovimentacao().add(h); 
				   periodic.elementAt(aux).setEmprestado(true);
				   users.elementAt(aux2).setPendente(true);
				   periodic.elementAt(aux).getMovimentacao().elementAt(pos).toString();
			    }else 
				   JOptionPane.showMessageDialog(null,"Livro alugado ou não registrado!");return;
	   	   }else
		     	   JOptionPane.showMessageDialog(null,"Aluno não registrado, ou já possui livro alugado");return;
	      }catch (Exception ex) {
       	           JOptionPane.showMessageDialog(null,"Livro não estava alugado ou não registrado!");
	      } 
        }
	    public void Devolução(){
	      try{
		     int aux=periodic.indexOf(Integer.parseInt(JOptionPane.showInputDialog("Insira o código do livro: ")));
		     int aux2=users.indexOf(Integer.parseInt(JOptionPane.showInputDialog("Insira o código do aluno: ")));
		       if (aux>=0 && periodic.elementAt(aux).getEmprestado()!= false){
			     if (aux2>=0 && users.elementAt(aux2).getPendente()!=false){	   
				   periodic.elementAt(aux).setEmprestado(false);
				   users.elementAt(aux2).setPendente(false);
				   JOptionPane.showMessageDialog(null, " Devolução feita !!!");
			      }else 
				  JOptionPane.showMessageDialog(null,"Aluno não registrado, ou não possui livro alugado");return;
		       }else
			      JOptionPane.showMessageDialog(null,"Livro não estava alugado ou não registrado!");return;
	         }catch (Exception ex) {
	        	  JOptionPane.showMessageDialog(null,"Livro não estava alugado ou não registrado!");
			}
	    }
        public void removerCliente(){
          try{	
        	int aux=users.indexOf(Integer.parseInt(JOptionPane.showInputDialog("Insira o Código do cliente a ser deletado:")));
             if (aux>=0 && getUsers().size()>0){
              users.removeElementAt(aux);
              JOptionPane.showMessageDialog(null, " Cliente removido com sucesso !");
              }  
           }catch (Exception ex) {
        	    JOptionPane.showMessageDialog(null,"Opção Inválida");
		   }
        }
        public void removerPeriodico(){
          try{	
        	int aux=periodic.indexOf(Integer.parseInt(JOptionPane.showInputDialog("Insira o Código do Periódico a ser deletado: ")));
            if (aux>=0 && getPeriodic().size()>0){
              periodic.removeElementAt(aux);
              JOptionPane.showMessageDialog(null, " Periódico removido com sucesso !");
            }  
          }catch (Exception ex){
      	      JOptionPane.showMessageDialog(null,"Opção Inválida");
	        }
        }
} 

usa esse cara “code” minisculo:

faltou o valor de b

faltou a classe historico!

import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JOptionPane;

public class Historico {
    private  Date emprestimo= new Date();
    private  Date devolucao= new Date();
    private String Usuario; 
		 public Date getEmprestimo() {return emprestimo;}
	     public void setEmprestimo(Date emprestimo) {this.emprestimo = emprestimo;}
	     public Date getDevolucao() {return devolucao;}
	     public void setDevolucao(Date devolucao) {this.devolucao = devolucao;}
         public String getUsuario() {return Usuario;}
		 public void setUsuario(String usuario) {Usuario = usuario;}
		 
		 public Historico(){
        	 setDevolucao(null);
        	 setEmprestimo(null);	
        	 setUsuario(null);
         }

		public void Solicitar(String nome) {
        	setEmprestimo(new Date());
		    try {
				setDevolucao(new SimpleDateFormat("dd/MM/yyyy").parse(JOptionPane.showInputDialog("Insira a data de devolução: ")));
			}  catch (Exception ex) {
				JOptionPane.showMessageDialog(null, "Digite uma Data Válida");
			}
            setUsuario(nome);
		}
        public  String toString(){
             return "Nome do Usuário: "+getUsuario()+
                    "\n Data de Empréstimo: "+getEmprestimo()+
        	        "\n Data de Devolução: "+(new SimpleDateFormat("dd/MM/yyyy").format(getDevolucao()));
         }


}

valor de b???

for (int i = 0; i < b.getPeriodic().size(); i++) {   // b = ???
   if (p.getCod() == b.getPeriodic().elementAt(i).getCod())
      p.setCod((int) (1000 + Math.random() * 99999));
   }
   getB().getPeriodic().add(b.getPeriodic().size(), p); //getB() = ???

vlw pela ajuda ja consegui fazer… um colega mostrou como fazer …
sih que agora tenho mais uma duvida … o professor disse que tem que grvar esses vectors
o periodic e o user num arquivo texto ou num arquivo binário;
ele falow que era soh dar um
write object (do vector no caso ), queria saber como faezr isso …

bixo manda o projeto zipado

fica mais facil de dar uma olhada

para gravar em um arquivo vc pode ler:

http://www.guj.com.br/java.tutorial.artigo.13.1.guj

que eh batata

[]s

assim esse artigo mostra manipular txt sim, mais tbm mostra que não vou conseguir grvar um abjto inteiro em txt e que vou precisar de um binario, e tbm nao sei manipular binario, se puder dar uma ajuda ou mostrar onde psso encontrar um artigo que ensine isso agradeço

Se tratar seu vetor como um objeto, existe maneiras de gravar o objeto inteiro e de umas vez so no txt e depois recuperar se preciso, para isso vc vai utilizar serializacao de obejtos.

http://www.devmedia.com.br/articles/viewcomp.asp?comp=3050
Nesse exemplo o objeto eh um cliente!

Sera que eh isso mesmo que tu quer?

[]s

pow é isso mesmo :slight_smile: … pelo menos eu acho… vlw cara por enquanto acho que consigo me virar kkkk

soh mais uma duvida … quando eu ler esse arquivo …
eu boto tipo assim…

[code]
public void lerClientesDeUmArquivo(){
try{
FileInputStream arquivoLeitura = new FileInputStream("/Users/Jefferson/Desktop/cliente.dat");//Carrega o arquivo
ObjectInputStream objLeitura =new ObjectInputStream(arquivoLeitura);//Classe responsavel por recuperar os objetos do arquivo
setUsers((Vector) objLeitura.readObject());
objLeitura.close();
arquivoLeitura.close();
}catch( Exception ex ){

       }

   }
[/code]

isso???