[RESOLVIDO] Pegar String de Arraylist  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
hugoramone
Entusiasta Java

Membro desde: 08/02/2010 18:19:21
Mensagens: 18
Offline

Pessoal... tenho uma classe que deve fazer o seguinte:


Tem um arraylist que recebe uma frase, mostra se alguma palavra da frase tem o "radical" _N junto dela, se tiver mostra a posição que ela está, mas depois de mostrar a posição dela não consigo mostrar o seu conteúdo.




package calculos;

import java.util.ArrayList;


public class Corpus {

Corpus() {


//Armazenar todos os _N em uma lista

ArrayList<Object> al = new ArrayList<Object>();
al.add("teste_N um_O array_P list_N para_I extrair_O valores_U");

Iterator it = al.iterator();

int index;
String str;

for (int i = 0; i < al.size(); i++) {
str = (String)it.next();
index = str.indexOf("_N");

if (al.contains(str)){
System.out.print("Sim, existe pelo menos um _N \n\n");
}

System.out.print("Se existe um _N, em que posição ele está? \n\n");

if (index > -1) {
System.out.println("Está na posição: " + index);
i = al.size();

String tst = (String) al.get(index);
System.out.println("Está na posição: " + index);



}


}

}


}



Saída:
Sim, existe pelo menos um _N

Se existe um _N, em que posição ele está?

Está na posição: 5
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 5, Size: 1
at java.util.ArrayList.RangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at calculos.Corpus.<init>(Corpus.java:39)
at calculos.CPrincipal.main(CPrincipal.java:


Obrigado,
Abraços

This message was edited 1 time. Last update was at 09/02/2010 18:00:09

felipemartinsss
JavaChild
[Avatar]

Membro desde: 23/01/2007 01:27:41
Mensagens: 126
Localização: São Paulo-SP
Offline

hugoramone wrote:Pessoal... tenho uma classe que deve fazer o seguinte:


Tem um arraylist que recebe uma frase, mostra se alguma palavra da frase tem o "radical" _N junto dela, se tiver mostra a posição que ela está, mas depois de mostrar a posição dela não consigo mostrar o seu conteúdo.




package calculos;

import java.util.ArrayList;


public class Corpus {

Corpus() {


//Armazenar todos os _N em uma lista

ArrayList<Object> al = new ArrayList<Object>();
al.add("teste_N um_O array_P list_N para_I extrair_O valores_U");

Iterator it = al.iterator();

int index;
String str;

for (int i = 0; i < al.size(); i++) {
str = (String)it.next();
index = str.indexOf("_N");

if (al.contains(str)){
System.out.print("Sim, existe pelo menos um _N \n\n");
}

System.out.print("Se existe um _N, em que posição ele está? \n\n");

if (index > -1) {
System.out.println("Está na posição: " + index);
i = al.size();

String tst = (String) al.get(index);
System.out.println("Está na posição: " + index);



}


}

}


}



Saída:
Sim, existe pelo menos um _N

Se existe um _N, em que posição ele está?

Está na posição: 5
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 5, Size: 1
at java.util.ArrayList.RangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at calculos.Corpus.<init>(Corpus.java:39)
at calculos.CPrincipal.main(CPrincipal.java:


Obrigado,
Abraços



Voce errou nessa parte:



Observe que quando chamou o método indexOf(String), o chamou em um objeto String, isso retorna a posição inicial
da primeira ocorrência de uma substring especificada. No caso, essa substring a ser buscada é "_N".
E quando chamou o método get(int index), o fez em uma referência ArrayList, houve uma pequena confusão porque você tentou
acessar a posição que recebeu do indexOf, que se referia a String e suas posições e não ao ArrayList.
Recebeu a ArrayIndexOutOfBounds por ter acessado um índice inválido, já que só há 1 elemento em seu array e você tentou acessar
a posição 5.

"Aos outros eu dou o direito de ser como são, a mim, dou o dever de ser cada dia melhor." (Chico Xavier)

"A ciência se compõe de erros que, por sua vez, são os passos até a verdade." (Julio Verne)

Meu Blog: http://felipemartinssantos.blogspot.com
[WWW] [MSN]
hugoramone
Entusiasta Java

Membro desde: 08/02/2010 18:19:21
Mensagens: 18
Offline

Muito obrigado pela explicação!

Além de corrigir consegui entender o porque do erro, muito obrigado!
marcobiscaro2112
JWizard

Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline

Só complementando: usar generics com <Object> é o mesmo que não usar. Se o seu List é de String, declare um List<String>. Isso evita possíveis erros de digitação/programação, evita casts, possíveis erros de runtime e deixa o código mais limpo.

E sempre que quiser colocar seu código aqui, use as tags "code". Assim:

[code]
seu código aqui
[/code]

Marco Biscaro.

Seja livre!

Você sabia que provavelmente há milhares de arquivos duplicados no seu computador?

Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[Email] [WWW] [MSN]
marcobiscaro2112
JWizard

Membro desde: 01/12/2008 11:56:04
Mensagens: 2408
Localização: São Paulo - SP
Offline

Ah... e não custa nada colocar um [RESOLVIDO] no título do tópico quando não houver mais a dúvida (vá no primeiro tópico, escolha "editar" e mude o título).

Marco Biscaro.

Seja livre!

Você sabia que provavelmente há milhares de arquivos duplicados no seu computador?

Ei... você está usando DefaultTableModel no seu projeto?? Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[Email] [WWW] [MSN]
hugoramone
Entusiasta Java

Membro desde: 08/02/2010 18:19:21
Mensagens: 18
Offline

obrigado Marco, desculpe, sou novato no fórum.

This message was edited 1 time. Last update was at 09/02/2010 18:01:21

 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team