Problemas com uma função

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
 
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 ;)
 
Back
Topo