skip to main content

kiesler.at

JAVAs StringTokenizer
updated by rck, 2006-12-31

Oft genug hat man einen String, in dem nach gewissen Zeichen getrennte Dinge drinnen stehen. Sei es ein Datum, durch . getrennt. Oder auch ein zu berechnender Term mit Operationen der Art +, -, *, etc. Der JAVA StringTokenizer zerlegt solche Zeichenketten mühelos und spart viel Arbeit.

1 | 2 | 3 | 4 | 5 | 6 | 7

Trennzeichen mit spezieller Bedeutung (zB Operanden)

Bis jetzt haben wir nur einen der drei Konstuktoren des StringTokenizers beachtet. Der erste ist relativ uninteressant, da trivial. Aus der Dokumentation: The tokenizer uses the default delimiter set, which is " \t\n\r\f"

Wesentlich gewinnbringender ist der dritte Fall; hier bekommen wir nämlich auch die Trennzeichen als Token zurück.

Erklärung: Einfacher Berechner

26-27 Hier verwenden wir den dritten Constructor, der auch die Operanden zurückgibt.

Beispiel: Einfacher Berechner

Die Trennzeichen könnten zB Addition, Subtraktion, etc. sein. Ich habe hierfür ein ganz schlichtes Berechnungsprogramm zusammengestellt, welches nur Addieren und Subtrahieren kann. Damit spar ich mir die Prioritäten a la Multiplikation bindet stärker als Addition.

Mit etwas nachdenken sollten aber auch diese kein Problem sein.

26                 StringTokenizer st=new
27                         StringTokenizer(s, "+-", true);
28 
33                 while(st.hasMoreTokens()) {
34 
35                         if(op) {
36                                 zahl=Integer.parseInt(
37                                         st.nextToken());
38 
39                                 if(lastop.equals(""))
40                                         result=zahl;
41                                 else
42                                 if(lastop.equals("+"))
43                                         result+=zahl;
44                                 else
45                                 if(lastop.equals("-"))
46                                         result*=zahl;
47                                 else
48                                 throw new Exception
49                                         ("Unbekannte Operation '"+
50                                          lastop+"'");
51 
52                         } else
53 
54                                 lastop=st.nextToken();
55 
56                         op=!op;
57                 }
58 

Erklärung: Einfacher Berechner

26-27 Hier setzen wir wie besprochen den dritten Constructor ein. Dadurch erhalten wir auch Tokens der Art "-" und "+".

35 und 56 Ein Trick: Ich lasse nur Terme zu, bei denen sich Operand und Wert abwechseln. Das Prüfe ich mit einem Boolean-Wert namens op. Im Anhang das komplette Listing.

39-50 hier findet die eigentliche Berechnung statt. Je nach zuvor eingelesener Operation addieren oder subtrahieren wir.

1 | 2 | 3 | 4 | 5 | 6 | 7



RSSComments - Make a comment
The comments are owned by the poster. We are not responsible for its content.
RSSAll Articles
2008, 2007, 2006, 2005, 2004

What's Related

Documents

Übersetzerbau

Link Manager

Übersetzerbau
EPROG
JAVA

Article Manager

EPROG
Übersetzerbau
JAVA

FAQ

Übersetzerbau

RSS News Feeds

JAVA

Latest Updates

AdministrativeTexts
updated by freddiemac1993, 2013-06-14
wiki

Re: adventures
created by brittdavis10, 2012-02-23 (1 rply, 3 views)
thread

Re: how to run phpwebsite...
created by alexander, 2011-08-25 (2 rpls, 3607 views)
thread

Re: Forum tags
created by HaroldFaragher, 2011-08-22 (3 rpls, 8488 views)
thread


Zu den KO2100 Foren