skip to main content

kiesler.at

Spaziergang durch einen Einheitenberechner
updated by rck, 2004-10-10

Der Ernstfall ist eingetreten. EPROG. Drei Beispiele, eines schlimmer als das andere. Zu allem Überfluss sind die mitgelieferten "Unterstützungsprogramme" mehr ein Klotz am Bein als sonst was.

Wie geht's weiter, wenn kein Stein und kein Seil verfügbar ist, das einen den Weg in die Donau begleiten könnte?

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13

tokenize()

52         public static void tokenize(String s)
53                 throws Exception {
54 
55                 // siehe: http://java.sun.com/j2se/1.3/docs/
56                 //               api/java/util/StringTokenizer.html
57                 
58                 StringTokenizer st=new StringTokenizer(
59                                 s, "()+-*/", true);
60 
61                 int Klammerebene=0;
62                 String token;
63 
64                 while(st.hasMoreTokens()) {
65                         token=st.nextToken();
66 
67 
68                         // Klammern sind was ganz spezielles...
69 
70                         if(token.equals("("))
71                                 Klammerebene++;
72                         else
73                         if(token.equals(")")) {
74                                 Klammerebene--;
75                                 if(Klammerebene<0)
76                                         throw(new Exception("Zuviele schließende Klammern!"));
77                         }
78 
79                         ausdruck.add(token);
80                         
81                 }
82 
83 
84                 if(Klammerebene!=0)
85                         throw(new Exception("Zuviele öffnende Klammern!"));
86 
87                 return;
88         }

Beschreibung von tokenize()

Tokenize nimmt den übergebenen String s und füllt damit unsere ArrayList ausdruck. Angenehmerweise werden da auch gleich die Klammern überprüft!

58-59: Der JAVA String-Tokenizer erledigt für uns die Hauptarbeit. Wir sagen ihm, dass unsere Trennzeichen die Zeichen ()+-*/ sind. Das anschließende "true" heißt in diesem Fall, dass wir auch Vorkommnisse von unseren Trennzeichen mitbekommen möchten. Ohne dem "true" würden sie stillschweigend unter den Tisch gekehrt und wir bekämen nur unsere Nummern und Maßeinheiten. Ohne Operatoren.

64-65: While(hasMoreTokens) token=nextToken.

Die klassische Tokenizer-Schleife. Wir holen uns Happen für Happen und schreiben den in unseren String token.

70-77: Die Klammerprüfung. Öffnende Klammern erhöhen unseren Klammerzähler, bei schließenden der Check, ob nicht vielleicht schon zu viel geschlossen wurde.

84: Hier der Check, ob zuviele Klammern geöffnet wurden.

79: Wie wir schon aus dem ArrayList Tutorial wissen, fügt add ein Element an das Ende der ArrayList. Wir haben also damit unsere Tokens schön der Reihe nach in die ArrayList reingeschrieben.

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13



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