Eine gute Antwort wäre:

C:\daten\javaNotes> java TokenTester
Geben Sie einen String ein: val = 12+8
val

=

12
+
8

Leerzeichen ignorieren

Beachten Sie, dass die Leerzeichen genauso wie die anderen Begrenzungszeichen und Token zurückgegeben werden. Das könnte vielleicht nicht genau das sein, was Sie wollen. Sie könnten es vorziehen die Leerzeichen völlig zu ignorieren und nur "=+-" als Begrenzungszeichen zu verwenden. Das folgende Programm tut das:

import java.io.*;
import java.util.*;

public class TokenTester
{
  public static void main ( String[] args ) throws IOException
  {
    BufferedReader stdin =
      new BufferedReader(new InputStreamReader(System.in));

    System.out.print("Geben Sie einen String ein:");
    String str = stdin.readLine();

    StringTokenizer tok =
      new StringTokenizer( str, "=+-", true ); // KEIN Leerzeichen vor =

    while ( tok.hasMoreTokens() )
      System.out.println( tok.nextToken().trim() );
  }
}

Jetzt gibt nextToken() die Strings "val ", "=", " 12", "+", und "8" zurück. Die trim() Methode entfernt die Leerzeichen an den beiden Enden der Strings.

FRAGE 18:

Ein Programm erwartet einen String, der die gegenwärtige Zeit in der Form "9:23AM" , "12:45PM" oder "4:00 AM" enthält. Nennen Sie den String zeit. Der String sollte in Stunden, Minuten und AM oder PM als Indikator gesplittet werden. Wie sollte der StringTokenizer konstruiert werden?

Inhaltsverzeichnis