java.lang.StringTokenizer

m1k3ch3ck

Mitglied
Hallo,

ich habe bereits selbst versucht mich schlau zu machen leider nicht all zu erfolgreich.
Deswegen die Frage hier:

Kann mir jemand erklären was die Argumente, speziell das zweite (DELIMITER) beim Erzeugen des StringTokenizers zu bedeuten hat ?
Ich weiss das es der Bruchstrich ist, jedoch versteh ich die Funktionsweise der Methode nicht.
Finde ferner den Konstruktor der da Verwendet wird (für Str.Tknizer) nicht.

Kann mir das jemand erklären ?


Java:
	/**
	 * Rationalzahl aus String der Form "x/y" 
	 * @param val  String
	 */


	public Rational(String val) {
		StringTokenizer tok = new StringTokenizer(val, DELIMITER);
		numerator = Long.parseLong(tok.nextToken());
		denominator = Long.parseLong(tok.nextToken());
		norm();
	}
 
StringTokenizer (Java Platform SE 6)

> Ich weiss das es der Bruchstrich ist, jedoch versteh ich die Funktionsweise der Methode nicht.

Die gibt der Reihe nach die einzelnen Tokens einer Zeichenkette aus. Wenn das Trennzeichen ein Leerzeichen ist, dann gibt nextToken das nächste Wort aus.

So kann man beispielsweise jedes Wort einzeln ausgeben:
Java:
StringTokenizer tok = new StringTokenizer("Die,Wörter,sind,mit,Beistrich,getrennt.", ",");
while (tok.hasMoreTokens()) {
    System.out.println("Wort: " + tok.nextToken());
}
 
Zuletzt bearbeitet:
Ach ist das zweite Argument automatisch das "Trennargument" ?
z.B. "182838485868" --> (182838485868, 8) --> ausgabe 1,2,3,4,5,6 ?


Dennoch bin ich mir über die Funktionsweise der oben gezeigten Methode nicht im Klaren. (Sie ist aus der Musterlösung des Prof.)
Java:
StringTokenizer tok = new StringTokenizer(val, DELIMITER);
		numerator = Long.parseLong(tok.nextToken());
		denominator = Long.parseLong(tok.nextToken());

Beispiel:
"317/10"

step1: tok.nextToken() = 3 --> parse in Zähler
step2: tok.nextToken() = 1 --> parse in Zähler
step3: tok.nextToken() = 7 --> parse in Zähler
step4: tok.nextToken() = DELIMITER --> Frage: was heißt das für tok.nextToken(); ?
step5: tok.nextToken() = 1 --> parse in Nenner
step6: tok.nextToken() = 0 --> parse in Nenner

Kommt der DELIMITER hier nur bei Schritt 4 zu tragen ? Wirft das false für "(tok.nextToken());" zurück, oder wie schafft es das Programm sonst in die nächste Zeile (Nenner) zu kommen ?
 
Zuletzt bearbeitet:
Wie kommst Du darauf, daß 3, 1 und 7 Token seien? Das Trennzeichen ist doch der Schrägstrich. (Zumindest nehme ich mal an, daß die Konstante DELIMITER den Schrägstrich enthält.)

Beispiel:
"317/10"

step1: tok.nextToken() = 317 → parse in Zähler
step2: tok.nextToken() = 10 → parse in Nenner

Ein Token ist einfach nur das, was zwischen den Trennzeichen steht, und der Tokenizer macht nichts anderes, als eine Zeichenkette in Token aufzuteilen. Aber bevor ich das hier noch näher erkläre: probiere es aus, teste mein Beispiel, schaue in die API-Dokumentation.
 

Zurück
Oben