skip to main content

kiesler.at

Variablen mit Hashtable verwalten
updated by rck, 2004-10-03

Beispiel 1186 der EPROG-Beispielsammlung lässt sich sehr schön mit einer Hashtable lösen. Es handelt sich hierbei um eine schlichte Variablenverwaltung für ganzzahlige Werte.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8

getWert()

getWert ist ein Handlanger von assign. Diese Methode versucht zuerst, den übergebenen String als Konstante zu interpretieren. Gelingt dies, wird die Konstante zurückgeliefert.

Anderenfalls wird in der Hashtable nachgesehen, ob der Wert vielleicht dort abgelegt ist. Wenn das auch nicht der Fall ist, gibt's eine Exception.

77         public static Short getWert(String s)
78                 throws Exception
79         {
80                 // etwaiges führendes Fragezeichen entfernen
81                 // (Stichwort: Ausgabe). Fängt an dieser Stelle
82                 // auch den gemeinen Fall ab, dass zB ?14
83                 // abgefragt wird.
84 
85                 if(s.startsWith("?"))
86                         s=s.substring(1);
87 
88                 if(s.startsWith("-"))
89                         throw new Exception("Negative Werte sind "+
90                                 "laut Spezifikation nicht vorgesehen!");
91 
92                 try {
93 
94                         return(Short.valueOf(s));
95 
96                 } catch(NumberFormatException nfe) {
97 
98 
99                         // nichtexistente Werte haben den
100                         // Wert null (wie in einer Datenbank).
101                         // Wir müssen uns somit um das Werfen
102                         // der Exception kümmern!
103 
104                         Short wert=(Short)syms.get(s);
105 
106                         if(wert == null)
107                                 throw new Exception("Wert '"+
108                                         s+"' ist unbekannt!");
109                         else
110                                 return(wert);
111 
112                 }
113         }

Beschreibung getWert

85-86 Damit getWert angenehm für die Hauptschleife zu gebrauchen ist, überspringen wir ein gegebenenfalls vorhandenes, führendes Fragezeichen.

88-90 Negative Werte sind nicht erlaubt, entsprechend gibt es bei einem - eine Exception

92-95 Versuchen wir einfach mal, den String als Zahl zu interpretieren. Klappt das, bekommt der Aufrufer den Wert zurück.

96 Klappt das nicht, könnten wir ja immer noch eine Variable bekommen haben.

104 Sehen wir also in unserer Hashtable nach.

106-108 Bekamen wir null zurück, gibt's die Variable in der Hashtable nicht und wir werfen eine Exception.

110 anderenfalls liefern wir den Wert zurück.

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



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