assign() -- merken von Variablen | |
---|---|
assign ist der Kern unseres Programmes. Diese Methode vereint das Auslesen von Werten mit dem Schreiben von Werten in die Hashtable. 120 public static void assign(String s) 121 throws Exception 122 { 123 124 int eq=s.indexOf('='); 125 126 if(eq<1) 127 throw new Exception("'"+s+"' ist keine "+ 128 "gültige Zuweisung!"); 129 130 if(eq+1>s.length()) 131 throw new Exception("Zuweisung '"+s+"' ist "+ 132 "leer!"); 133 134 String name=s.substring(0, eq); 135 Short wert=getWert(s.substring(eq+1)); 136 137 checkName(name); 138 139 // Spezifikation sieht vor, dass nur max. 10 Variablen 140 // verwendet werden können. 141 142 if(syms.put(name, wert) == null) { 143 vars++; 144 145 if(vars>10) 146 throw new Exception("Es werden nur "+ 147 "maximal 10 Variablen unterstützt, "+ 148 name+" wäre Nummer 11."); 149 } 150 } |
Beschreibung von assign | |
---|---|
124 wir merken uns zuerst, an welcher Stelle das '=' steht. Zur Erinnerung: Unsere Ausdrücke haben die Form NAME=WERT. 126-128 steht das = so weit vorne, dass sich da kein Variablenname mehr ausgeht, oder gibt's gar kein =, gibt's eine Exception. 130-132 geht sich nach dem = kein Wert mehr aus, ebenfalls. 134 mit substring bekommen wir den Teil vor dem = raus, das ist dann unser Name. 135 getWert() liefert gegebenenfalls die Eingegebene Konstante als Short zurück. Sollte der Benutzer einen Variablennamen als Wert angegeben haben, sieht getWert() in der Hashtable nach und liefert den passenden Wert. 137 hier prüfen wir, ob der Name unserer Spezifikation entspricht. 142-149 bei der Prüfung auf maximal 10 Variablen nutze ich eine Besonderheit der Hashtable. put liefert NULL zurück, falls der Schlüssel noch nicht existiert hat. und den alten Wert, falls der Schlüssel bereits existierte. So können wir leicht mitzählen, wieviele Variablen bereits abgelegt wurden und gegebenenfalls eine Exception werfen. |
Comments - Make a comment |
The comments are owned by the poster. We are not responsible for its content. |
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