Gyakorlati alapok
A texasi dátumdarabolós
Az előző, A StringTokenizer osztály című fejezetben ismertetett osztály már elkövetett egy horrorisztikus bűncselekményt: szétdarabolt egy Shakespeare-idézetet. Módszere rendkívül egyszerű volt, akárcsak egy visítozó láncfűrész:
while(st.hasMoreTokens()){
System.out.println(st.nextToken());
}
Folytatjuk bűnügyi tudósításunkat egy másfajta módszer ismertetésével, bár a metódusok még mindig a StringTokenizer osztályból származnak.
Ebben a rövid részben egy dátumot fogunk vadállat módjára szétdarabolni. Egy dátum specialitása az, hogy egységei legtöbbször ponttal van elválasztva egymástól, például: 2017.09.20. Ilyen formában programozás-technikailag legtöbbször nem felhasználható, ezért elemeire kell bontanunk.

Nyilvánvalóan az év, hónap, nap hármas hasznos számunkra, míg a pont csak behatárolja ezeket az információkat, ezért is nevezzük pozícióját határolójelnek (delimiter). Ez utóbbi most lényeges is, hiszen StringTokenizer egyik konstruktor-függvénye bemeneti pataméterében várja ezt a String típusú határolójelet, valamint az áldozatnak szánt bemeneti dátumsztringet (StringTokenizer(datum, ".")).
Ezután a darabolás a nexToken() függvény segítségével könnyen megoldható.
További érdekesség az int típusú számláló léptetése, amelyet láthatóan a System.out.print() függvény paraméterlistájában is megtehetünk (szamlalo++).
Nézzük meg a futtatható Java-kódot:

import java.util.*;
class Main {
public static void main (String args[]){
int szamlalo = 1;
String datum = new String("2017.09.20.");
StringTokenizer st = new StringTokenizer(datum, ".");
String ev = st.nextToken();
String honap = st.nextToken();
String nap = st.nextToken();
System.out.print(szamlalo++ + ": év - " + ev +"\n"
+ szamlalo++ + ": hónap - " + honap +"\n"
+ szamlalo++ + ": nap - " + nap);
}
}
Végeredmény:
1: év - 2017
2: hónap - 09
3: nap - 20
A fenti kódban észrevehetjük, hogy a tokenek String adattípusban kerültek tárolásra. Természetesen darabolhatunk más adattípusba is, vegyük például az integert (Numerikus egész című fejezet):

import java.util.*;
class Main {
public static void main (String args[]){
int szamlalo = 1;
String datum = new String("2017.09.20.");
StringTokenizer st = new StringTokenizer(datum, ".");
int ev = Integer.parseInt(st.nextToken());
int honap = Integer.parseInt(st.nextToken());
int nap = Integer.parseInt(st.nextToken());
System.out.print(szamlalo++ + ": év - " + ev +"\n"
+ szamlalo++ + ": hónap - " + honap +"\n"
+ szamlalo++ + ": nap - " + nap);
}
}
Végeredmény:
1: év - 2017
2: hónap - 09
3: nap - 20


