1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Problemas com uma função

Discussão em 'Programação' iniciada por Tiago Correia, 4 de Julho de 2008. (Respostas: 2; Visualizações: 537)

  1. Ola a todos

    Tenho o seguinte função em java. esta função visa procurar um determinado paciente, em que depois fornece os dados pessoais do paciente alem das consultas do paciente.
    contudo esta função só consegue encontrar o primeiro paciente do arraylist e quando coloca para procurar um outro paciente aparece a seguinte excepção: "java.lang.IndexOutOfBoundsException: Index: 3, Size: 3". parece-me que está a indicar que não encontrou nada, apesar de ter a certeza que coloquei um valor que está guardado no arraylist. Convem referir que esta função vai buscar dados a dois arraylist.

    Alguem é capaz de perceber qual é o erro?
    Alguem me ajuda?
    Eu já tentei e não sou capaz....

    Código:
    static void mostraPaciente() {
     
      String ficheiro="HL7.dat";
      String ficheiros="Paciente.dat";
      int D=numeroPacientes();
      int C=numeroConsultas();
     
      geral.limparEcra();
      System.out.print("\nIndique o nome do Paciente: ");
      String nome = geral.lerLinha();
      try {
       FileInputStream fis = new FileInputStream(ficheiro);
       ObjectInputStream ois = new ObjectInputStream(fis);
       ArrayList f = (ArrayList) ois.readObject();
       FileInputStream fisp = new FileInputStream(ficheiros);
       ObjectInputStream oisp = new ObjectInputStream(fisp);
       ArrayList p = (ArrayList) oisp.readObject();
     
       for(int i=0; i<C; i++){
        Paciente p2 = (Paciente)p.get(i);
        if(p2.nome.equals(nome)){   
         for(int j=0; j<D; j++){
          ADT p1 = (ADT)f.get(j);
          if(p1.M.id==p2.id){
           apresentarpaciente(p2);
           apresentarconsulta(p1);
           geral.lerLinha();
           }        
          }
         }
        }
       oisp.close();
       ois.close();   
      }
      catch (Exception e) { e.printStackTrace();
      }
     
     }
    Obrigado pela atenção:D
     
  2. Rebelo6

    Rebelo6 Power Member

    Esperimenta la trocar onde tens
    for(int i=0; i<C; i++)

    por
    for(int i=0; i<D; i++)

    e
    for(int j=0; j<D; j++)

    por
    for(int j=0; j<C; j++)

    acho que tens os C's e os D's trocados ;)
     
  3. Obrigado, o problema era mesmo esse.

    Ja vou dormir mais descansado :D

    Até amanha pessoal....
     

Partilhar esta Página