Pessoal… a Lina já resolveu um primeiro problema e me ajudou a entender um pouco de como manipular strings… o primeiro caso era saber a posição de uma string dentro de um array e imprimir seu conteúd (post da Lina abaixo mostra como para quem está procurando isso)
agora me encontro em outro desafio, que segue a seguir:
estou tentando comparar dois radicais em uma frase , exemplo:
eu_A estou_N comparando_ADJ frases_B em_A programação_D java_E
no caso eu estou no momento encontrando o “n” e o “adj”… estou tentando pegar a posição dos dois para dizer que se existe um _N e logo em seguida um _ADJ, entao imprima a palavra que vem junto do _N , no caso o “estou”. segue a tentiva:
[code]package calculos;
import java.util.ArrayList;
public class Corpus {
Corpus() {
// Armazenar todos os _N em uma lista
ArrayList<Object> listaN = new ArrayList<Object>();
listaN
.add("teste_N um_O array_P list_N para_ADJ ser_N testado_ADJ anaba_AF sajias_N");
// Buscar os _N
String[] recebe_lista = ((String) listaN.get(0)).split(" ");
int posicao = 0;
// Monta um novo array para receber possíveis _N e suas posições
for (String nova_lista : recebe_lista) {
posicao += nova_lista.length() + 1;
// Verifica na lista o _N
if (nova_lista.substring(nova_lista.length() - 2).equalsIgnoreCase(
"_N")) {
// Imprime _N
System.out
.print("[PASSOU NO PRIMEIRO LAÇO]Existe um _N na posição: "
+ (posicao - 1)
+ ", a palavra junto ao _N é: "
+ nova_lista);
System.out.print("\n\n");
}
}
// Se tiver algum _N, buscar possíveis _ADJ
String[] recebe_listaADJ = ((String) listaN.get(0)).split(" ");
int pos = 0;
// Monta um novo array para receber possíveis _ADJ e suas posições
for (String nova_listaADJ : recebe_listaADJ) {
pos += nova_listaADJ.length() + 1;
// Verifica se na lista inicial existe _ADJ
if (nova_listaADJ.substring(nova_listaADJ.length() - 4)
.equalsIgnoreCase("_ADJ")) {
System.out
.print("[PASSOU NO SEGUNDO LAÇO]Existe um _ADJ na posição: "
+ (pos - 1)
+ ", a palavra junto ao _ADJ é: "
+ nova_listaADJ);
System.out.print("\n\n");
}
}
[color=red]
aqui da um erro porque não posso chamar as duas listas fora do FOR… mas era uma idéia de como poderia ser feito[/color]
// Compara a posição do _N e do _ADJ para ver se está próximo, o que caracteriza possivelmente um diagnóstico
if (nova_lista.contains("_N") && nova_listaADJ.contains("_ADJ")){
int posAux;
posAux = pos - posicao;
for (String lista_final : recebe_listaADJ) {
posAux += lista_final.length()+1;
if (posAux < 10){
System.out.print("\n\nExiste na frase um _N próximo a um _ADJ " + lista_final + " na posição: "+ posAux + "\n" );
}
}
}
}
}
[/code]
alguém tem alguma idéia?
abraços