fi.jyu.mit.ohj2
Class Erottelija

java.lang.Object
  extended by fi.jyu.mit.ohj2.Erottelija
All Implemented Interfaces:
Enumeration

public class Erottelija
extends Object
implements Enumeration

Luokka StringTokenizerin korvaajaksi. Erona on se että jonon loppuessa ei tule ongelmia ja peräkkäisten erottimien välistä tulee tyhjä jono.

 Esimerkki:
 public static void main(String[] args) {
     Erottelija erottaja = new Erottelija("12;3.5:kissa,,,istuu puussa,3.4",
                                          ";:,");
     System.out.println("Palasia: " + erottaja.countTokens());
     for (int i=1; erottaja.hasMoreTokens(); i++ )
       System.out.println(i + ": |" + erottaja.nextToken()+"|");
     System.err.println("8: |"+erottaja.nextToken()+"|");
     erottaja.reset();
     System.out.println(erottaja.nextToken(0));
     System.out.println(erottaja.countRemaininTokens());
     System.out.println(erottaja.rest());
     System.out.println(erottaja.nextToken(0.0));
     System.out.println(erottaja.nextToken(2));
     System.out.println(erottaja.nextToken(2.1));
     System.out.println(erottaja.countRemainingTokens());
     System.out.println(erottaja.rest());
   }

 Tulostaa:
 
 Palasia: 7
 1: |12|
 2: |3.5|
 3: |kissa|
 4: ||
 5: ||
 6: |istuu puussa|
 7: |3.4|
 8: ||
 12
 6
 3.5:kissa,,,istuu puussa,3.4
 3
 ,istuu puussa,3.4
 12
 3.5
 2
 2.1
 

Version:
11.3.2007
Author:
vesal
Example:
 Erottelija erottaja = new Erottelija("12;3.5:kissa,,,istuu puussa,3.4",
                                          ";:,");
 erottaja.nextToken() === $s; erottaja.hasMoreTokens() === $tokens;
 erottaja.countRemainingTokens() === $n; erottaja.rest() === $rest;   
 
   $i  |  $s             | $tokens | $n | $rest
  --------------------------------------------------------------------------  
   0   | ---             | true    | 7  | "12;3.5:kissa,,,istuu puussa,3.4"
   1   | "12"            | true    | 6  | "3.5:kissa,,,istuu puussa,3.4"
   2   | "3.5"           | true    | 5  | "kissa,,,istuu puussa,3.4"
   3   | "kissa"         | true    | 4  | ",,istuu puussa,3.4"
   4   | ""              | true    | 3  | ",istuu puussa,3.4"
   5   | ""              | true    | 2  | "istuu puussa,3.4"
   6   | "istuu puussa"  | true    | 1  | "3.4"
   7   | "3.4"           | false   | 0  | ""
   8   | ""              | false   | 0  | ""
   9   | ""              | false   | 0  | ""
   
   erottaja.nextToken(";","kissa") === "kissa";, 
 Erottelija erottaja = new Erottelija("12;3.5:kissa,,,istuu puussa,3.4;;",
                                          ";:,");
 erottaja.nextToken() === $s; erottaja.hasMoreTokens() === $tokens;
 erottaja.countRemainingTokens() === $n; erottaja.rest() === $rest;   
 
   $i  |  $s             | $tokens | $n | $rest
  --------------------------------------------------------------------------  
   0   | ---             | true    | 9  | "12;3.5:kissa,,,istuu puussa,3.4;;"
   1   | "12"            | true    | 8  | "3.5:kissa,,,istuu puussa,3.4;;"
   2   | "3.5"           | true    | 7  | "kissa,,,istuu puussa,3.4;;"
   3   | "kissa"         | true    | 6  | ",,istuu puussa,3.4;;"
   4   | ""              | true    | 5  | ",istuu puussa,3.4;;"
   5   | ""              | true    | 4  | "istuu puussa,3.4;;"
   6   | "istuu puussa"  | true    | 3  | "3.4;;"
   7   | "3.4"           | true    | 2  | ";"
   8   | ""              | true    | 1  | ""
   9   | ""              | false   | 0  | ""
  10   | ""              | false   | 0  | ""
   
   erottaja.nextToken(";","kissa") === "kissa";
 

Constructor Summary
Erottelija(String str)
          Luodaan erottelija, joka erottelee jonosta str palasia välilyönnin kohdalta.
Erottelija(String str, String delim)
          Luodaan erottelija, joka erottelee jonosta str palasia minkä tahansa joukosta delim löytyvän merkin kohdalta.
 
Method Summary
 int countRemainingTokens()
          Laskee palasten lukumäärän.
 int countTokens()
          Laskee palasten lukumäärän.
 int countTokens(int pos)
          Laskee palasten lukumäärän.
 boolean hasMoreElements()
          Tarkistaa että vieläkö palasia on jäljellä.
 boolean hasMoreTokens()
          Tarkistaa että vieläkö palasia on jäljellä.
static int indexOfAny(String str, String delim)
          Etsitään mistä kohti jonosta str löytyy ensimmäinen erotinmerkki joukosta delim.
static int indexOfAny(String str, String delim, int pos)
          Etsitään mistä kohti jonosta str löytyy ensimmäinen erotinmerkki joukosta delim.
 boolean isDelimBefore()
          Tarkistaa onko erotinmerkkiä juuri nykypaikan vasemmalla puolella
 boolean isDelimBefore(int pos)
          Tarkistaa onko erotinmerkkiä juuri paikan vasemmalla puolella
 boolean isDelimBefore(int pos, String delim)
          Tarkistaa onko erotinmerkkiä juuri paikan vasemmalla puolella
 double nextDouble()
          Palauttaa jonosta seuraavan reaaliluvun ja 0.0 jos luku ei ole kunnollinen.
 Object nextElement()
          Palauttaa seuraavan palasen Objectina.
 int nextInt()
          Palauttaa jonosta seuraavan kokonaisluvun ja 0 jos luku ei ole kunnollinen.
 String nextToken()
          Palauttaa seuraavan palasen jonosta
 double nextToken(double def)
          Palauttaa jonosta seuraavan reaaliluvun ja oletuksen jos luku ei ole kunnollinen.
 int nextToken(int def)
          Palauttaa jonosta seuraavan kokonaisluvun ja oletuksen jos luku ei ole kunnollinen.
 String nextToken(String delim)
          Palauttaa seuraavan palasen jonosta.
 double nextToken(String delim, double def)
          Palauttaa jonosta seuraavan reaaliluvun ja oletuksen jos luku ei ole kunnollinen.
 int nextToken(String delim, int def)
          Palauttaa jonosta seuraavan kokonaisluvun ja oletuksen jos luku ei ole kunnollinen.
 String nextToken(String delim, String def)
          Ottaa seuraavan palasen ja jos se on tyhjä, niin palauttaa def-jonon.
 void reset()
          Palauttaa paikan erottelijan alkuun.
 String rest()
          Palauttaa jäljellä olevan jonon.
 void trim()
          Siivoaa palasteltavan jonon turhista välilyönneistä
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Erottelija

public Erottelija(String str,
                  String delim)
Luodaan erottelija, joka erottelee jonosta str palasia minkä tahansa joukosta delim löytyvän merkin kohdalta.

Parameters:
str - jono josta erotellaan
delim - erottavien merkkien joukko

Erottelija

public Erottelija(String str)
Luodaan erottelija, joka erottelee jonosta str palasia välilyönnin kohdalta.

Parameters:
str - jono josta erotellaan
Example:
                                     //01234 
 Erottelija erottaja = new Erottelija("a b ");
 erottaja.countTokens() === 3;
 
Method Detail

indexOfAny

public static int indexOfAny(String str,
                             String delim,
                             int pos)
Etsitään mistä kohti jonosta str löytyy ensimmäinen erotinmerkki joukosta delim. Etsintä aloitetaan paikasta pos.

Parameters:
str - mistä jonosta etsitään
delim - joukko erotinmerkkejä
pos - paikka josta aloitetaan
Returns:
palauttaa ensimmäisen esiintymän tai -1 jos ei löydy
Example:
   indexOfAny("a;, b",",; ",0) === 1
   indexOfAny("a;, b",",; ",2) === 2
   indexOfAny("a;, b"," ",0)   === 3
   indexOfAny("a;, b",".",0)   === -1
   indexOfAny(null,",; ",0)    === -1
   indexOfAny("a b",",; ",-1)  === 1
 

indexOfAny

public static int indexOfAny(String str,
                             String delim)
Etsitään mistä kohti jonosta str löytyy ensimmäinen erotinmerkki joukosta delim. Etsintä aloitetaan alusta.

Parameters:
str - mistä jonosta etsitään
delim - joukko erotinmerkkejä
Returns:
palauttaa ensimmäisen esiintymän tai -1 jos ei löydy
Example:
   indexOfAny("a;, b",",; ") === 1
 

nextToken

public String nextToken()
Palauttaa seuraavan palasen jonosta

Returns:
jonon seuraava palanen
Example:
 Erottelija erottaja = new Erottelija("a;b;",";");
 erottaja.nextToken() === $s; erottaja.hasMoreTokens() === $tokens;
 erottaja.countRemainingTokens() === $n; erottaja.rest() === $rest;   
 
   $i  |  $s             | $tokens | $n | $rest
  --------------------------------------------------------------------------  
   0   | ---             | true    | 3  | "a;b;"
   1   | "a"             | true    | 2  | "b;"
   2   | "b"             | true    | 1  | ""
   3   | ""              | false   | 0  | ""
   4   | ""              | false   | 0  | ""
 

isDelimBefore

public boolean isDelimBefore(int pos,
                             String delim)
Tarkistaa onko erotinmerkkiä juuri paikan vasemmalla puolella

Parameters:
pos - paikka josta tutkitaan
delim - kelpaavat erotinmerkit
Returns:
true jos on erotin merkki vasemmalla puolella, false muuten
Example:
                                     //01234 
 Erottelija erottaja = new Erottelija("a;b;",";");
 erottaja.isDelimBefore(0,";") === false;
 erottaja.isDelimBefore(1,";") === false;
 erottaja.isDelimBefore(2,";") === true;
 erottaja.isDelimBefore(3,";") === false;
 erottaja.isDelimBefore(4,";") === true;
 erottaja.isDelimBefore(5,";") === false;
 

isDelimBefore

public boolean isDelimBefore(int pos)
Tarkistaa onko erotinmerkkiä juuri paikan vasemmalla puolella

Parameters:
pos - paikka josta tutkitaan
Returns:
true jos on erotin merkki vasemmalla puolella, false muuten
Example:
                                     //01234 
 Erottelija erottaja = new Erottelija("a;b;",";");
 erottaja.isDelimBefore(0) === false;
 erottaja.isDelimBefore(1) === false;
 erottaja.isDelimBefore(2) === true;
 erottaja.isDelimBefore(3) === false;
 erottaja.isDelimBefore(4) === true;
 erottaja.isDelimBefore(5) === false;
 

isDelimBefore

public boolean isDelimBefore()
Tarkistaa onko erotinmerkkiä juuri nykypaikan vasemmalla puolella

Returns:
true jos on erotin merkki vasemmalla puolella, false muuten
Example:
                                     //01234 
 Erottelija erottaja = new Erottelija("a;b;",";");
                               erottaja.isDelimBefore() === false;
 erottaja.nextToken() === "a"; erottaja.isDelimBefore() === true;
 erottaja.nextToken() === "b"; erottaja.isDelimBefore() === true;
 erottaja.nextToken() === "";  erottaja.isDelimBefore() === false;
 erottaja.nextToken() === "";  erottaja.isDelimBefore() === false;
 

nextToken

public String nextToken(String delim)
Palauttaa seuraavan palasen jonosta.

Parameters:
delim - erotinjoukko, jonka perusteella perusteella erotetaan
Returns:
jonon seuraava palanen
Example:
   Erottelija erottaja = new Erottelija("a b;c");
   erottaja.nextToken(" ") === "a";
   erottaja.nextToken(" ") === "b;c";
   erottaja = new Erottelija("a b;c");
   erottaja.nextToken(" ") === "a";
   erottaja.nextToken(";") === "b";
   erottaja.nextToken(" ") === "c";
   erottaja.nextToken(" ") === "";
   erottaja = new Erottelija(null);
   erottaja.nextToken(" ") === "";
   erottaja = new Erottelija("a b");
   erottaja.nextToken(null) === "a";
 

nextToken

public String nextToken(String delim,
                        String def)
Ottaa seuraavan palasen ja jos se on tyhjä, niin palauttaa def-jonon.

Parameters:
delim - erotinjoukko, jonka perusteella perusteella erotetaan
def - oletusarvo jos seuraava palanen on tyhjä
Returns:
jonon seuraava palanen tai oletus
Example:
   Erottelija erottaja = new Erottelija("a b;c");
   erottaja.nextToken(" ","d") === "a";
   erottaja.nextToken(" ","d") === "b;c";
   erottaja.nextToken(" ","d") === "d";
 

nextToken

public int nextToken(String delim,
                     int def)
Palauttaa jonosta seuraavan kokonaisluvun ja oletuksen jos luku ei ole kunnollinen.

Parameters:
delim - erotinjoukko, jonka perusteella perusteella erotetaan
def - oletusarvo jos luku ei ole kunnollinen
Returns:
seuraava kokonaisluku tai oletus
Example:
   Erottelija erottaja = new Erottelija("1;2");
   erottaja.nextToken(";",3) === 1; 
   erottaja.nextToken(";",3) === 2; 
   erottaja.nextToken(";",3) === 3; 
 

nextToken

public int nextToken(int def)
Palauttaa jonosta seuraavan kokonaisluvun ja oletuksen jos luku ei ole kunnollinen.

Parameters:
def - oletusarvo jos luku ei ole kunnollinen
Returns:
seuraava kokonaisluku tai oletus
Example:
   Erottelija erottaja = new Erottelija("1 2");
   erottaja.nextToken(3) === 1; 
   erottaja.nextToken(3) === 2; 
   erottaja.nextToken(3) === 3; 
 

nextInt

public int nextInt()
Palauttaa jonosta seuraavan kokonaisluvun ja 0 jos luku ei ole kunnollinen.

Returns:
seuraava kokonaisluku tai 0
Example:
   Erottelija erottaja = new Erottelija("1 2");
   erottaja.nextInt() === 1; 
   erottaja.nextInt() === 2; 
   erottaja.nextInt() === 0; 
 

nextToken

public double nextToken(String delim,
                        double def)
Palauttaa jonosta seuraavan reaaliluvun ja oletuksen jos luku ei ole kunnollinen.

Parameters:
delim - erotinjoukko, jonka perusteella perusteella erotetaan
def - oletusarvo jos luku ei ole kunnollinen
Returns:
seuraava reaaliluku tai oletus
Example:
   Erottelija erottaja = new Erottelija("1;2");
   erottaja.nextToken(";",3.1) ~~~ 1.0; 
   erottaja.nextToken(";",3.1) ~~~ 2.0; 
   erottaja.nextToken(";",3.1) ~~~ 3.1; 
 

nextToken

public double nextToken(double def)
Palauttaa jonosta seuraavan reaaliluvun ja oletuksen jos luku ei ole kunnollinen.

Parameters:
def - oletusarvo jos luku ei ole kunnollinen
Returns:
seuraava reaaliluku tai oletus
Example:
   Erottelija erottaja = new Erottelija("1 2");
   erottaja.nextToken(3.1) ~~~ 1.0; 
   erottaja.nextToken(3.1) ~~~ 2.0; 
   erottaja.nextToken(3.1) ~~~ 3.1; 
 

nextDouble

public double nextDouble()
Palauttaa jonosta seuraavan reaaliluvun ja 0.0 jos luku ei ole kunnollinen.

Returns:
seuraava reaaliluku tai 0.0
Example:
   Erottelija erottaja = new Erottelija("1 2");
   erottaja.nextDouble() ~~~ 1.0; 
   erottaja.nextDouble() ~~~ 2.0; 
   erottaja.nextDouble() ~~~ 0.0; 
 

countTokens

public int countTokens(int pos)
Laskee palasten lukumäärän.

Parameters:
pos - paikka josta laskeminen aloitetaan
Returns:
palasten lukumäärä.

countTokens

public int countTokens()
Laskee palasten lukumäärän.

Returns:
palasten lukumäärä.

countRemainingTokens

public int countRemainingTokens()
Laskee palasten lukumäärän.

Returns:
palasten lukumäärä.

hasMoreElements

public boolean hasMoreElements()
Tarkistaa että vieläkö palasia on jäljellä.

Specified by:
hasMoreElements in interface Enumeration
Returns:
onko palasia jäljellä

hasMoreTokens

public boolean hasMoreTokens()
Tarkistaa että vieläkö palasia on jäljellä.

Returns:
onko palasia jäljellä

nextElement

public Object nextElement()
Palauttaa seuraavan palasen Objectina.

Specified by:
nextElement in interface Enumeration
Returns:
seuraava palanen
Example:
   Erottelija erottaja = new Erottelija("1 2");
   erottaja.nextElement().toString() === "1";
 

trim

public void trim()
Siivoaa palasteltavan jonon turhista välilyönneistä

Example:
   Erottelija erottaja = new Erottelija(" 1   2 ");
   erottaja.countTokens() === 6;
   erottaja.trim();
   erottaja.countTokens() === 4;
 

rest

public String rest()
Palauttaa jäljellä olevan jonon.

Returns:
jäljellä oleva jono.
Example:
   Erottelija erottaja = new Erottelija(" 1   2 ");
   erottaja.trim();
   erottaja.rest() === " 1 2 ";
 

reset

public void reset()
Palauttaa paikan erottelijan alkuun.