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.

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

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:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 


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):

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 


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