Buenas, ando estudiando java en el DAW y me he topado con lo siguiente, llevo un buen rato intentando encontrar el error con el debugger pero no veo nada A ver si me podéis echar una mano. Explico el programa brevemente:
Se da esa frase en el string t y la idea es meter cada palabra en una posicion del array llamando al método existePalabra para comprobar si la palabra ya está en el array, en ese caso no se mete. La idea de todo esto es hacer luego un conteo de cuantas repeticiones por palabra hay en el string dado... pero no paso de meter las palabras.
El error pasandolo por el debugger es el for que hace el conteo de los tokens. A la 6º vuelta vuelve a 0 y se va cargando las palabras ya escritas. El ejemplo de salida del array sería este:
[El],[euro],[está],[más],[alto],[que] Aquí debería ir el resto de la frase pero lo que hace en realidad es sobreescribir la posicion 0 del array en cada vuelta por el siguiente token...
De verdad parece ser una tontería pero no doy con ello. Le preguntaría al profesor pero no le veo hasta el lunes y quiero dar con la dichosa solución.
Muchisimas gracias al que me ayude
package Tokenizer;
import java.util.StringTokenizer;
public class Ejercicio1 {
public static void main(String[] args) {
String t = "El euro está más alto que el dólar. El dólar está barato.";
String[] palarray = new String[12];
StringTokenizer st = new StringTokenizer(t, " .");
System.out.println(st.countTokens() + " palabras");
while (st.hasMoreTokens()) {
for (int i = 0; i < st.countTokens(); i++) {
String p = st.nextToken();
if (!existePalabra(palarray, p)) {
palarray[i] = p;
}
}
}
}
private static boolean existePalabra(String[] palarray, String p) {
for (int i = 0; i < palarray.length; i++) {
if (palarray[i] != null) {
if (palarray[i].equals(p)) {
return true; }
else {
continue;
}
}
}
return false;
}
}