Pessoal, estou estudando como manipular strings e arrays e preciso de um help para entender o que estou fazendo.
Eu tenho uma frase com palavras classificadas, por exemplo: "Estou_A estudando_B manipulacao_C de_A strings_D em_T java_Z "
Extraio todos os "_A", todos os "_B", etc. (isso já consegui)
Pego a posição de cada "_A" ou "_B" para depois poder comparar.
é ai que eu não consigo. Quero dizer por exemplo:
Se "estudando_B" estiver próximo de "manipulacao_C"
então imprima "estudando_B", por exemplo.
A saída atual que estou recebendo é essa:
Frase
[estou_N procurando_PREP uma_N palavra_PREP por_N tags_ADJ em_ADJ uma_N frase_ADJ]
Procurando todos os nomes
Existe um _N na posição: 7, a palavra junto ao _N é: estou_N
Existe um _N na posição: 29, a palavra junto ao _N é: uma_N
Existe um _N na posição: 48, a palavra junto ao _N é: por_N
Existe um _N na posição: 70, a palavra junto ao _N é: uma_N
Procurando todos os adjetivos
Existe um _ADJ na posição: 57, a palavra junto ao _ADJ é: tags_ADJ
Existe um _ADJ na posição: 64, a palavra junto ao _ADJ é: em_ADJ
Existe um _ADJ na posição: 80, a palavra junto ao _ADJ é: frase_ADJ
Encontrou um: 81 (aqui é o problema, não consigo imprimir a palavra que está na posição 81. esta posição ainda é duvidosa, creio que o algoritmo não seja esse)
a saída deveria ser um número menor, exemplo: 80 (do último _ADJ impresso) - 70 (do último _N impresso) da 10.
testes.Calcs@19821f
A seguir segue o cod:
package testes;
import java.util.ArrayList;
public class Calcs {
public Calcs() {
System.out.println("Frase");
ArrayList<Object> listaN = new ArrayList<Object>();
listaN
.add("estou_N procurando_PREP uma_N palavra_PREP por_N tags_ADJ em_ADJ uma_N frase_ADJ");
System.out.println(listaN + "\n");
String[] recebe_lista = ((String) listaN.get(0)).split(" ");
int posicao = 0;
System.out.println("Procurando todos os nomes");
for (String nova_lista : recebe_lista) {
posicao += nova_lista.length() + 1;
if (nova_lista.substring(nova_lista.length() - 2).equalsIgnoreCase(
"_N")) {
System.out.println("Existe um _N na posição: " + (posicao - 1)
+ ", a palavra junto ao _N é: " + nova_lista);
}
}
int posicaoADJ = 0;
System.out.print("\n");
System.out.println("Procurando todos os adjetivos");
for (String nova_listaADJ : recebe_lista) {
posicaoADJ += nova_listaADJ.length() + 1;
if (nova_listaADJ.substring(nova_listaADJ.length() - 4)
.equalsIgnoreCase("_ADJ")) {
System.out.println("Existe um _ADJ na posição: "
+ (posicaoADJ - 1) + ", a palavra junto ao _ADJ é: "
+ nova_listaADJ);
}
}
// >>>>>>>>>>>> AQUI É O PROBLEMA <<<<<<<<<<<<
// não consegui imprimir a palavra da posição.
// Aqui era para verificar se o nome está próximo de um adjetivo e se
// estiver quero imprimir a palavra e a posição -- PROVAVEL QUE ESSE LAÇO ESTEJA ERRADO e eu não tenha idéia de como fazer
if (posicao - posicaoADJ < 100) {
System.out.print("\nEncontrou um: " + posicao + "\n");
}
}
}
alguém poderia ajudar nessa confusão?
Obrigado.
abraços