Script Java

Script Java Script Java

29.01.2014 Aufrufe

3.1 int, boolean und Programmstrukturen int errorCount=0; if (odd.getState()^number.isOdd()) errorCount++; if (sameDigits.getState()^number.hasSameDigits()) errorCount++; if (square.getState()^number.isASquare()) errorCount++; if (errorCount==0) message.setText("All answers are correct!"); else if (errorCount==1) message.setText("There is one error!"); else message.setText("There are "+errorCount+" errors!"); aufgerufen. Diese enthalten wiederum if-/else statements. Hierbei ist zu beachten, dass ein else immer zum letzten if statement gehört. In der ersten Anweisung wird eine lokale Variable errorCount deklariert und sogleich mit Null initialisiert. Sie dient dem Festhalten der Fehler, die ein Benutzer macht und ist vom Datentyp int. Die Zeile if (odd.getState()^number.isOdd()) errorCount++; enthält ein if statement ohne ein else statement. Falls die in Klammern stehende Bedingung erfüllt ist, wird die Anweisung errorCount++ ausgeführt. Die Anweisung errorCount++ bewirkt, dass der Wert der Variablen errorCount um eins erhöht wird. Der arithmetische Operator ‘++’ wird als Inkrement (engl. increment) bezeichnet (eins dazuzählen). Natürlich gibt es auch einen arithmetischen Dekrement- Operator (engl. decrement) der Form ‘--’ (eins abzählen). Beide können als sogenannte Postfix-Notation (engl. postfix expression) der Variablen folgen (z.B. errorCount++) oder als Präfix-Notation (engl. prefix expression) der Variablen vorangestellt werden (z.B. ++errorCount). Hierbei liegt der Unterschied der beiden Notationsformen in der Reihenfolge, in welcher das Inkrement/Dekrement und die Ausgabe eines Wertes erfolgt: bei einem Postfix-Ausdruck wird der Wert der Variablen vor der Erhöhung/Erniedrigung ausgegeben und erst anschliessend inkrementiert/dekrementiert, bei einem Präfix- Ausdruck wird der Variablenwert zuerst erhöht/erniedrigt und danach ausgegeben. Beiden Notationsformen ist aber gemeinsam, dass der Wert der Variablen schlussendlich erhöht/erniedrigt wird. Abbildung 3-8 illustriert anhand eines Programmfragments den Unterschied der beiden Notationsformen. Es sei an dieser Stelle vor den Tücken eines Postfix- bzw. Präfix-Inkrements/Dekrements gewarnt, denn dies ist eine häufige Fehlerquelle! 76

3.1 int, boolean und Programmstrukturen Ausgabe: i++ ergibt: 3 ++j ergibt: 4 int i=3, j=3; System.out.println("i++ ergibt: " + i++); System.out.println("++j ergibt: " + ++j); Abbildung 3-8: Präfix- versus Postfix-Notation Der Boolesche Ausdruck odd.getState()^number.isOdd() enthält den logischen Operator exklusives Oder, welcher die links und rechts stehenden Methodenaufrufe miteinander verknüpft. Die an die Checkbox odd versandte Botschaft getState() gibt an, ob die Checkbox selektiert ist. Sie liefert also einen Booleschen Rückgabewert, welcher true ist, falls die Checkbox markiert ist. Mit dem Aufruf number.isOdd() wird nun geprüft, ob die Instanzvariable value des Objekts number wirklich eine ungerade Zahl ist. Der Rückgabewert der in der Klasse Number deklarierten Methode isOdd() ist wiederum von Typ boolean. Die beiden Wahrheitswerte werden nun mit dem exklusiven Oder verknüpft, was wiederum zu einem Booleschen Wert führt. Gemäss der in Abschnitt 3.1.2.13 definierten Wahrheitstabelle des exklusiven Oders ergibt der Ausdruck odd.getState()^number.isOdd() immer dann true, wenn die Angabe des Benutzers nicht mit dem Resultat der Methode isOdd() übereinstimmt, also falsch ist. In diesem Fall wird auch die Variable errorCount um eins erhöht. In analoger Weise werden nun die Zeilen if (sameDigits.getState()^number.hasSameDigits()) errorCount++; if (square.getState()^number.isASquare()) errorCount++; ausgewertet. 77

3.1 int, boolean und Programmstrukturen<br />

int errorCount=0;<br />

if (odd.getState()^number.isOdd()) errorCount++;<br />

if (sameDigits.getState()^number.hasSameDigits()) errorCount++;<br />

if (square.getState()^number.isASquare()) errorCount++;<br />

if (errorCount==0)<br />

message.setText("All answers are correct!");<br />

else if (errorCount==1)<br />

message.setText("There is one error!");<br />

else<br />

message.setText("There are "+errorCount+" errors!");<br />

aufgerufen. Diese enthalten wiederum if-/else statements. Hierbei ist zu beachten, dass ein<br />

else immer zum letzten if statement gehört.<br />

In der ersten Anweisung wird eine lokale Variable errorCount deklariert und sogleich<br />

mit Null initialisiert. Sie dient dem Festhalten der Fehler, die ein Benutzer macht und ist<br />

vom Datentyp int.<br />

Die Zeile<br />

if (odd.getState()^number.isOdd()) errorCount++;<br />

enthält ein if statement ohne ein else statement. Falls die in Klammern stehende Bedingung<br />

erfüllt ist, wird die Anweisung errorCount++ ausgeführt.<br />

Die Anweisung errorCount++ bewirkt, dass der Wert der Variablen errorCount um<br />

eins erhöht wird. Der arithmetische Operator ‘++’ wird als Inkrement (engl. increment)<br />

bezeichnet (eins dazuzählen). Natürlich gibt es auch einen arithmetischen Dekrement-<br />

Operator (engl. decrement) der Form ‘--’ (eins abzählen). Beide können als sogenannte<br />

Postfix-Notation (engl. postfix expression) der Variablen folgen (z.B. errorCount++)<br />

oder als Präfix-Notation (engl. prefix expression) der Variablen vorangestellt werden<br />

(z.B. ++errorCount). Hierbei liegt der Unterschied der beiden Notationsformen in der<br />

Reihenfolge, in welcher das Inkrement/Dekrement und die Ausgabe eines Wertes erfolgt:<br />

bei einem Postfix-Ausdruck wird der Wert der Variablen vor der Erhöhung/Erniedrigung<br />

ausgegeben und erst anschliessend inkrementiert/dekrementiert, bei einem Präfix-<br />

Ausdruck wird der Variablenwert zuerst erhöht/erniedrigt und danach ausgegeben. Beiden<br />

Notationsformen ist aber gemeinsam, dass der Wert der Variablen schlussendlich<br />

erhöht/erniedrigt wird. Abbildung 3-8 illustriert anhand eines Programmfragments den<br />

Unterschied der beiden Notationsformen. Es sei an dieser Stelle vor den Tücken eines<br />

Postfix- bzw. Präfix-Inkrements/Dekrements gewarnt, denn dies ist eine häufige<br />

Fehlerquelle!<br />

76

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!