Ayudanos contestando la siguiente encuesta acerca de Videojuegos!
Ir a la encuesta
>

StringTokenizer

 

Archivos necesarios:

La clase StringTokenizer es sumamente útil ya que nos permite dividir objetos de la clase String por palabras o incluso separarlos por alguna letra o conjunto de letras. Esto nos puede ser muy útil para guardar información en el disco duro y después leerla. Por ejemplo podríamos guardar todos los datos de una agenda en una sola línea, leer la línea y dividir los datos con un StringTokenizer.

El primer archivo es un zip que contiene todas las clases necesarias para correr el programa. La clase Main es la que más nos interesa ya que las demás clases las veremos más a fondo en otro trial sobre como dibujar en las formas, el segundo archivo es un archivo de texto separado por comas que obtuvimos del INEGI con datos sobre la población del estado de Querétaro.

Main.java
Clases

CSV
poblacion.csv

Primero veamos como conseguir el archivo que vamos a utilizar en esta práctica para ver que esto es algo que viene de datos de la vida real. Primero entramos a la página del INEGI y ahí hacemos lo siguiente:
INEGI1

En la parte inferior de la página vamos a ver la parte de accesos directos como se ve en la primera foto. Hacemos click en XII Censo General de Población y Vivienda, 2000

Después en la parte superior izquierda está la parte de bases de datos donde se encuentra la opción de Tabulados básicos.

Después queremos que nos de la población total por municipio, edad y sexo.

Por último elegimos en la parte superior que nos presente los datos del estado de Querétaro y municipio de Querétaro y que nos exporte toda la información a un archivo csv. Como puedes notar el archivo no es idéntico al que utilizamos en la práctica pero únicamente le recorté líneas para no graficar tanto.

INEGI2
INEGI3

INEGI4

INEGI5

 

¿Cómo utilizar el StringTokenizer?

El StringTokenizer separa un String en "tokens", por ejemplo al dividir el String "Tecnológico de Monterrey Campus Querétaro" por palabras tendríamos cinco tokens: "Tecnológico", "de", "Monterrey", "Campus" y "Queretaro". Fíjate que el StringTokenizer por omisión no regresa más que las palabras divididas por el separador, sin regresar el separador (en este caso serían los espacios).

Como podemos ver en el archivo la información viene separada por comas y cada coma representa una columna por lo que podemos utilizar el StringTokenizer para separar la información y utilizarla.

Para crear un StringTokenizer debemos utilizar un constructor que recibe dos parámetros. El primero es el String que se va a dividir y el segundo es el separador.

StringTokenizer
Como primer parámetro pasamos una línea leida del archivo ya que en esta está el registro que vamos a dividir, como segundo parámetro pasamos una coma ya que en el archivo cada registro está separado por comas. Ahora veamos un par de métodos muy útiles al utilizar StringTokenizer. También podemos iniciar un StringTokenizer con únicamente un parámetro que sería el String a dividir, en este caso lo divide en palabras utilizando el espacio en blanco como separador. Por último si queremos que los tokens incluyan también el separador podemos mandar true como un tercer parámetro.
hasMoreTokens() El método hasMoreTokens() nos devuelve verdadero siempre y cuando el StringTokenizer tenga más tokens, es decir siempre y cuando hayan elementos, por lo tanto este método nos sirve para cuando no sabemos el número total de tokens (si quisieramos leer la lista de invitados a una fiesta y no sabemos cuantos invitados fueramos podríamos utilizar un while para leer hasta que ya no hayan más tokens).
El segundo método que es muy importante en la clase StringTokenizer es el método nextToken() que, como su nombre lo indica nos devuelve el siguiente token, este es el método que utilizamos para leer cada token y nos devuelve un String por lo que podemos guardar su valor en cualquier variable tipo String o incluso podemos utilizar un parseInt() o parseDouble() para convertirlo en un valor numérico. nextToken()
El StringTokenizer es una clase importantísima al utilizar archivos de texto en Java ya que nos permite guardar la información en cualquier formato y poder leerla después de una manera correcta. Aunque no tiene la misma flexibilidad que los archivos binarios y no nos permite guardar de manera natural un dato en su forma numérica nos da una gran flexibilidad sin gran parte de la complejidad de los archivos binarios, en especial cuando tenemos que guardar muchos registros.

RegresarRegresar

           
Ayudanos contestando la siguiente encuesta acerca de Videojuegos!
Ir a la encuesta