Ayuda con la clase StringTokenizer pls!

Soy nuevo en el foro tengo un problema con la clase StringTokenizer, lo que estoy haciendo es un programa en netbeans 6.7 que lea un archivo txt y me entregue todas las palabras de largo mayor o igual a 18 caracteres, (necesito que me muestre la linea en que esta ubicada y la palabra) tengo lo siguiente:
File f = new File( "C:/prueba.txt" );
BufferedReader entrada;
entrada = new BufferedReader( new FileReader( f ) );
String linea;
    while(entrada.ready()){
        linea = entrada.readLine();
        StringTokenizer st = new StringTokenizer(linea);
            while (st.hasMoreTokens()) {
                      String token="";
                      token=st.nextToken();
                      System.out.println(token);
               }
}
Esto lee linea por linea el archivo, y luego imprime todas las palabras, pero el problema que tengo es que no puedo manipular la variable token, osea, poner token. Length() para saber su largo. Me manda error :S.
Ayuda porfaaaa! Me tiene complicado esto..

1 respuesta

Respuesta
1
El código para que funcione sería algo como esto
File f = new File( "C:/prueba.txt" ); 
BufferedReader entrada = null; 
try {
     entrada = new BufferedReader( new FileReader( f ) );
} catch (FileNotFoundException e) {
     System.out.println("Error, el fichero no existe");

String linea; 
int contadorLineas = 1;
try {
      while((linea = entrada.readLine())!= null){ 
      StringTokenizer st = new StringTokenizer(linea); 
      while (st.hasMoreTokens()) { 
            String token=st.nextToken();
             if(token.endsWith(".")){ //si termina en un . se lo quitamos
                  token = token.substring(0,token.length()-1);
              }
            if(token!= null && token.length()>=18){ //si el tamaño + grande de 18
                  System.out.println("Linea " + contadorLineas + " --> palabra [" + token + "] tiene tamaño " + token.length());
            }
      }      
      //incrementamos contador de Lineas
      contadorLineas++;
     }
} catch (IOException e) {
      System.out.println("Error " + e);

Esto te pintará por pantalla algo como:
Linea 27 --> palabra [perpendicularmente] tiene tamaño 18
etc..
Si miras el código, si que funciona el token. length(), ya que este método de la Clase String existe como bien decias.
En el código he puesto que quitara los . de los finales de las palabras.. sino por ejemplo te podías encontrar con palabras como (experimentalmente.) Seguidas de un punto y seguido.. y esto lo encontraba que tenia 18 de largo cuando la palabra realmente tiene 17.
Ah, y también he puesto los try, catch necesarios para que te compile correctamente, ¿ok?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas