1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

java.lang.IndexOutOfBoundsException: Index: 12, Size: 12

Amigos preciso de uma ajuda aqui, estou formatando um arquivo e faço recorte no mesmo de uma certo pedaço e vou adicionando em um list. ai quando vou carregar dar esse erro eu tentei colocar a variável com -1, só que dar o mesmo erro

alguém poderia me dar um auxilio sei que é erro juvenil mais não estou conseguindo

    private int idxCapaRight = 0;
    private int idxCapaLeft = 0;
    private StringBuilder gravaReciboFerias(String linha, Gravador gravador, File fileEntrada)throws IOException {

        try {

            fis = new FileInputStream(fileEntrada);
            br = new BufferedReader(new InputStreamReader(fis));

            linha = br.readLine();

            int qtdeCapa = listCapaRight.size() - 1;


                while ((linha = br.readLine()) != null) {

                    if (linha.startsWith( "131" ) && okCapa1.equals(Boolean.FALSE)) {

                    }

                    if (linha.startsWith( "131" ) && okCapa1.equals(Boolean.TRUE)) {

                        String tempCapRight = listCapaRight.get(idxCapaRight);
                        idxCapaRight++;

                        sbBoleto.append(tempCapRight.toString()).append(Constantes.FIM_LINHA);                
                        sbBoleto.append(Constantes.FRENTE).append(Constantes.FIM_LINHA);
                        sbBoleto.append(linha).append(Constantes.FIM_LINHA);
                        linha = br.readLine();
                        sbBoleto.append(linha).append(Constantes.FIM_LINHA);

                        okCapa2 = Boolean.TRUE;
                        gravador.incrementaSmi();

                    } else {
                        if (linha.contains( "=HPACRE" )) {
                            linha = br.readLine();
                            linha = br.readLine();
                            linha = br.readLine();
                            linha = br.readLine();
                            linha = br.readLine();

                            if(linha == null){

                                String tempCapRight = listCapaRight.get(idxCapaRight);
                                idxCapaRight++;

                                sbBoleto.append(tempCapRight.toString()).append(Constantes.FIM_LINHA);    

                                gravador.gravaArquivoSpool(sbBoleto.toString());

                                return sbBoleto;

                            }

                            linha = br.readLine();
                            linha = br.readLine();
                            linha = br.readLine();

                            if(linha == null){

                                String tempCapLeft = listCapasLeft.get(idxCapaLeft);
                                idxCapaLeft++;

                                sbBoleto.append(tempCapLeft.toString()).append(Constantes.FIM_LINHA);

                                gravador.gravaArquivoSpool(sbBoleto.toString());

                                return sbBoleto;
                            }

                        } else {

                            sbBoleto.append(linha).append(Constantes.FIM_LINHA);
                        }

                    }

                    if ((linha.contains( "131" ) && (okCapa2.equals(Boolean.TRUE))))  {

                        String tempCapLeft = listCapasLeft.get(idxCapaLeft);
                        idxCapaLeft++;

                        sbBoleto.append(tempCapLeft.toString()).append(Constantes.FIM_LINHA);
                        sbBoleto.append(Constantes.FRENTE).append(Constantes.FIM_LINHA);
                        sbBoleto.append(linha).append(Constantes.FIM_LINHA);

                        gravador.incrementaSmi();

                    }

                    okCapa1 = Boolean.TRUE;
                }

ERRO ACONTECE NESSA LINHA QUANDO CHEGAR NA ULTIMA PARTE DO ARQUIVO QUE VAI MONTAR ESSE PEDAÇO O idxCapaLeft ESTÁ COM VALOR 12, MAIS COMO VC DISSE O JAVA CONTA DE 0 ATÉ 11 e como não deixar isso acontecer que é a dúvida

                    if ((linha.contains( "131" ) && (okCapa2.equals(Boolean.TRUE))))  {

                    *****    String tempCapLeft = listCapasLeft.get(idxCapaLeft);*****
                        idxCapaLeft++;

método que recorta o arquivo é preenche os lists

                    capa.append(Constantes.VERSO).append(Constantes.FIM_LINHA);
                    capa.append(capaEmpresa).append(Constantes.FIM_LINHA);
                    linha = br.readLine();
                    capa.append(linha).append(Constantes.FIM_LINHA);
                    linha = br.readLine();
                    capa.append(linha).append(Constantes.FIM_LINHA);
                    linha = br.readLine();
                    capa.append(linha);

                    listCapaRight.add(capa.toString());
                    capa.delete(0, capa.length());


                    capa1.append(Constantes.VERSO).append(Constantes.FIM_LINHA);
                    capa1.append(capaEmpresa).append(Constantes.FIM_LINHA);
                    linha = br.readLine();
                    capa1.append(linha).append(Constantes.FIM_LINHA);
                    linha = br.readLine();
                    capa1.append(linha).append(Constantes.FIM_LINHA);
                    linha = br.readLine();
                    capa1.append(linha);


                    listCapasLeft.add(capa1.toString());
                    capa1.delete(0,capa1.length());
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java estrutura-de-dados arraylist ou faça a sua própria pergunta.