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

ArrayList [java]

Discussão em 'Programação' iniciada por ser eu, 13 de Junho de 2008. (Respostas: 12; Visualizações: 2894)

  1. Código:
    alunosArrayList1.addAll(Ler.lerFich_Alunos());
            
             while (ler.hasNextLine() && num_linhas < 1) {
                linha = ler.nextLine();
                
                num_linhas++;
            }
    
           
    
            while (ler.hasNextLine()) {
                lin = ler.nextLine();
                pal3 = lin.split(";");
                leitura1.add(pal3);
                linhacont++;
                
                while(alunosArrayList1.size() != 0){
                
                 aluno=(Alunos) alunosArrayList1.get(h);
                
                numero=aluno.getNumero();
                
                numero_fich=Integer.parseInt(pal3[0]);
                
                
                if(numero_fich == numero ){
                    
                 aluno.setEstatuto(1);
                 
                alunosArrayList1.set(h, aluno);
                  h++;  
                }
                else{
                                   
                    h++;
                }
            }
    este codigo copia o conteudo de um arrayList para outro, depois vai buscar cada posiçao do novo arrayList e se necessario muda um atributo dessa posiçao e substitui no arrayList.. o problema e que me esta a dar este erro:

    Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 4057, Size: 4057
    at java.util.ArrayList.RangeCheck(ArrayList.java:547)
    at java.util.ArrayList.get(ArrayList.java:322)
    at g15.Main.main(Main.java:51)

    alguem sabe como resolver isto?
     
    Última edição pelo moderador: 13 de Junho de 2008
  2. PJTuga

    PJTuga Power Member

    so o tamanho do array é 4057 então o index maximo é 4056
     
  3. MadOnion

    MadOnion Folding Member

    Parece-me que tens código redundante. Tens h++ dentro do if e do else, ora ele irá correr sempre(se for isso que pretendes, podes simplicar isso).
    Provavelmente aquele ler.hasNextLine() deve correr mais uma vez, e portanto o h deve estar um valor acima(com que valor foi iniciado o h?).
    Enfim, tal como o PJTuga disse, estás a aceder a uma posição na lista que não existe.
     
  4. o 'h' foi inicializado a zero.

    nao percebi muito bem :'(
     
  5. S7sRuss

    S7sRuss What is folding?

    cria uma variável que contenha a capacidade do array. "int lenght = alunosArrayList1.lenght();" por exemplo... e o h não pode ser maior ou igual a lenght.
     
  6. obg..

    ja esta a ler mas agr kero converter algumas posixoes do arrayList para inteiros mas, numero_fich=Integer.parseInt(leitura1.get(j)); nao funciona :S...
     
  7. MadOnion

    MadOnion Folding Member

    Não é lançada nenhum excepção, nesse caso? Podes estar a converter uma String em inteiros.
    A lista leitura1, é de que tipo?
     
  8. e' um arrayList :S
     
  9. MadOnion

    MadOnion Folding Member

    Até ai ja tinhamos chegado. É uma lista de que tipo de elementos?
    E não respondeste à pergunta.
     
  10. el_zeus

    el_zeus Power Member

    Tu estas a adicionar um String[] (variavel pal3, nao te esquecas que do que split retorna) para leitura1, depois tentas fazer um parseInt com a posicao j do arraylist que tem um String[] ...
     
  11. peço desculpa mas tou smp a mudar isto.. pq se continua.se com akele codigo ele ia comparar o numero com tdo o arrayList... entao mudei assim

    Código:
     while (ler.hasNextLine()) {
                lin = ler.nextLine();
                pal3 = lin.split(";");
                leitura1.add(pal3);
                linhacont++;
                flag=false;
                
                while(alunosArrayList1.size() != 0 && h<comp && flag == false){
                
                 aluno=(Alunos) alunosArrayList1.get(h);
                
                numero=aluno.getNumero();
                
    //             JOptionPane.showMessageDialog(null, numero);
                
                numero_fich=Integer.parseInt(pal3[0]);
                
    //             JOptionPane.showMessageDialog(null, numero_fich);
                
                
                if(numero == numero_fich){
                    
                 aluno.setEstatuto(1);
                 
                alunosArrayList1.set(h, aluno);
                  h++; 
                  flag=true;
                }
                else{
    //                 JOptionPane.showMessageDialog(null, "qqqq");
                                 
                    h++;
                }
            }
    pus uma flag, supostamente para kndo ele encontrar o numero sair do 2o ciclo while.. mas n ta a funcionar :S
     
    Última edição pelo moderador: 17 de Junho de 2008
  12. PJTuga

    PJTuga Power Member

    quando dizes que não funciona, devias dizer qual o erro que te esta a dar.. e ficava melhor se usas a tag CODE para se perceber melhor o codigo
     
  13. nao da pq nao altera o estatuto.. n e erro do proprio codigo :S
     

Partilhar esta Página