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

verify()

Mit verify pr�fen wir nun, ob die einzelnen Elemente der ArrayList alle g�ltig sind. Ist kein klassischer Parser, weil die Reihenfolge nicht gepr�ft wird. Das passiert sp�ter, bei berechne(int).

91���������public�static�void�verify()�throws�Exception�{
92�����������������for(int�i=0;�i
93�������������������������if(�����!Berechner.isValidWert((String)ausdruck.get(i))�&&
94���������������������������������!Berechner.isValidOperator((String)ausdruck.get(i))�)
95
96���������������������������������throw(new�Exception("Token�"+i+"�('"+
97�����������������������������������������(String)(ausdruck.get(i))+"')�ist�weder�"+
98�����������������������������������������"Operator�noch�Wert."));
99���������}

Beschreibung von verify()

92: wir klappern jeden Eintrag der ArrayList ab...

93-94: ...und pr�fen, ob er ein g�ltiger Wert oder ein g�ltiger Operator ist.

96-98: Nein? --> Exception! Eine Exception ist nichts anderes als ein besonderer Zustand, der mit try / catch abgepr�ft werden kann. Wir landen durch dieses throw in Zeile 299 des Hauptprogramms, wo dann ein "EprogIO.println(ERROR)" ausgef�hrt wird. Also genau das, was wir brauchen!

isGeklammert()

F�r unsere Klammernberechnung ben�tigen wir eine Funktion, die uns sagt, ob �berhaupt geklammert ist. Diese schaut so aus:

102���������public�static�boolean�isGeklammert()�throws�Exception {
103�����������������//�Annahme:�Korrekt�geklammert.�Sollte�ja�mit�tokenize
104�����������������//���gecheckt�worden�sein!
105
106�����������������return(ausdruck.contains(new�String("(")));
107���������}

106: Haben wir ein "(" in unserem Ausdruck? --> true zur�ckliefern. Sonst: false.

Korrekter: Wir liefern zur�ck, ob wir ein "(" in unserer ArrayList haben.

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