View Full Version : ArrayList [java]


ser eu
13-06-2008, 13:02
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?

PJTuga
13-06-2008, 13:17
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?

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

MadOnion
13-06-2008, 18:20
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.

ser eu
16-06-2008, 10:49
o 'h' foi inicializado a zero.

nao percebi muito bem :'(

S7sRuss
16-06-2008, 13:30
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.

ser eu
17-06-2008, 10:38
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...

MadOnion
17-06-2008, 10:42
Não é lançada nenhum excepção, nesse caso? Podes estar a converter uma String em inteiros.
A lista leitura1, é de que tipo?

ser eu
17-06-2008, 10:56
e' um arrayList :S

MadOnion
17-06-2008, 11:06
Até ai ja tinhamos chegado. É uma lista de que tipo de elementos?
E não respondeste à pergunta.

el_zeus
17-06-2008, 11:07
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[] ...

ser eu
17-06-2008, 11:59
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


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

PJTuga
17-06-2008, 12:09
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

ser eu
17-06-2008, 12:35
nao da pq nao altera o estatuto.. n e erro do proprio codigo :S