Não consigo encontrar a Exception

Galera, boa tarde.

Estou tendo dificuldades em encontrar a Exception do código abaixo.
Fiquei tentando várias vezes, mas não localizo de forma alguma.

public void gerarRelatorio(String operacao, PessoaFisica p1)
    {
         for(int i=0; i<contas.size(); i++)
            {
                Date data = new Date(System.currentTimeMillis());
                SimpleDateFormat formatarDate = new SimpleDateFormat("yyyy-MM-dd");

                if(contas.get(i).getCPF().equals(p1.getCPF()))
                {
                    contas.get(i).getRelatorio().get(i).setOperacao(operacao);
                    contas.get(i).getRelatorio().get(i).setData(formatarDate.format(data));
                }
            }
       
    }

Os erros gerados são:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.RangeCheck(ArrayList.java:547) at java.util.ArrayList.get(ArrayList.java:322) at banco.Agencia.gerarRelatorio(Agencia.java:277) at banco.Agencia.CriarConta(Agencia.java:70) at banco.Main.main(Main.java:28)

Acredito que não seja necessário, mas a classe que chama a gerarRelatorio é essa:

[code]public void CriarConta(PessoaFisica p1)
{
Conta conta = new Conta();

    Date data = new Date(System.currentTimeMillis());
    SimpleDateFormat formatarDate = new SimpleDateFormat("yyyy-MM-dd");

    conta.setData(formatarDate.format(data));
    conta.setValor(0);
    conta.setCPF(p1.getCPF());
    contas.add(conta);

    gerarRelatorio("Abertura de conta", p1);

}[/code]

Se alguem puder me ajudar…

Obrigado

[code]public void gerarRelatorio(String operacao, PessoaFisica p1)
{
for(int i=0; i<contas.size(); i++)
{
Date data = new Date(System.currentTimeMillis());
SimpleDateFormat formatarDate = new SimpleDateFormat(“yyyy-MM-dd”);

            if(contas.get(i).getCPF().equals(p1.getCPF()))
            {
                contas.get(i).getRelatorio().get(i).setOperacao(operacao);
                contas.get(i).getRelatorio().get(i).setData(formatarDate.format(data));
            }
        }
   
}[/code]

nessa parte que provavelmente está o problema:

contas.get(i).getRelatorio().get(i).setOperacao(operacao);

Pois o indice voce esta pegando do tamanho do “contas” e nao do “relatorio”… provavelmente o size da lista “contas” é maior que o size da lista de relatorios.
>

# Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0  

Você está tentando acessar um elemento de uma coleção vazia, provavelmente em uma dessas duas linhas:

[code]# contas.get(i).getRelatorio().get(i).setOperacao(operacao);

contas.get(i).getRelatorio().get(i).setData(formatarDate.format(data)); [/code]

Você deve fazer um outro laço FOR para navegar no getRelatorio().get(i).

Por que vc não usa Foeach? É mais legível e melhor para manutenção!

for (Object string : objectsList) {
			
}

[quote=Christian Borges]Você deve fazer um outro laço FOR para navegar no getRelatorio().get(i).

Por que vc não usa Foeach? É mais legível e melhor para manutenção!

[code]
for (Object string : objectsList) {

}
[/code][/quote]

Também acredito que vc deva fazer um outro laço para percorrer no getRelatorio().get(i). Vc está utilizando o mesmo do contas, talvez seja esse o problema.

Ae galera, desculpa essa demora pra respoder… estive com alguns problemas aqui.

Consegui resolver com a ajuda de vcs, o problema era nessa parte do código:

if(contas.get(i).getCPF().equals(p1.getCPF())) { contas.get(i).getRelatorio().get(i).setOperacao(operacao); contas.get(i).getRelatorio().get(i).setData(formatarDate.format(data)); }

Existiam elementos null, e como eu não estava tratando eles de forma correta, acabava dando o erro ^^

essa variavel contas é um arrayList de conta, que agrupava contas de pessoas fisicas e juridicas. Por agrupar essas informações, no momento de procurar pela conta fisica por exemplo, acabava se deparando com objetos null, que contiam o CNPJ em vez do CPF.

Pra resolver, criei 2 classes diferentes, ContaFisica e ContaJuridica.

Obrigado pela ajuda de todos vcs.

Abraços