Script Java
Script Java Script Java
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
- Seite 25 und 26: 2.1 Programmaufbau, Attribute und M
- Seite 27 und 28: 2.1 Programmaufbau, Attribute und M
- Seite 29 und 30: 2.1 Programmaufbau, Attribute und M
- Seite 31 und 32: 2.1 Programmaufbau, Attribute und M
- Seite 33 und 34: 2.1 Programmaufbau, Attribute und M
- Seite 35 und 36: 2.1 Programmaufbau, Attribute und M
- Seite 37 und 38: 2.2 Checkbox } } place(familyName=n
- Seite 39 und 40: 2.3 Vererbung, Konstruktor und Rede
- Seite 41 und 42: 2.3 Vererbung, Konstruktor und Rede
- Seite 43 und 44: 2.3 Vererbung, Konstruktor und Rede
- Seite 45 und 46: 2.3 Vererbung, Konstruktor und Rede
- Seite 47 und 48: 2.3 Vererbung, Konstruktor und Rede
- Seite 49 und 50: 2.3 Vererbung, Konstruktor und Rede
- Seite 51 und 52: 2.4 Instanzvariablen und Klassenvar
- Seite 53 und 54: 2.4 Instanzvariablen und Klassenvar
- Seite 55 und 56: 2.5 Zusammenfassung Im Gegensatz da
- Seite 57 und 58: 3.1 int, boolean und Programmstrukt
- Seite 59 und 60: 3.1 int, boolean und Programmstrukt
- Seite 61 und 62: 3.1 int, boolean und Programmstrukt
- Seite 63 und 64: 3.1 int, boolean und Programmstrukt
- Seite 65 und 66: 3.1 int, boolean und Programmstrukt
- Seite 67 und 68: 3.1 int, boolean und Programmstrukt
- Seite 69 und 70: 3.1 int, boolean und Programmstrukt
- Seite 71 und 72: 3.1 int, boolean und Programmstrukt
- Seite 73 und 74: 3.1 int, boolean und Programmstrukt
- Seite 75: 3.1 int, boolean und Programmstrukt
- Seite 79 und 80: 3.1 int, boolean und Programmstrukt
- Seite 81 und 82: 3.1 int, boolean und Programmstrukt
- Seite 83 und 84: 3.1 int, boolean und Programmstrukt
- Seite 85 und 86: 3.1 int, boolean und Programmstrukt
- Seite 87 und 88: 3.1 int, boolean und Programmstrukt
- Seite 89 und 90: 3.1 int, boolean und Programmstrukt
- Seite 91 und 92: 3.1 int, boolean und Programmstrukt
- Seite 93 und 94: 3.1 int, boolean und Programmstrukt
- Seite 95 und 96: 3.1 int, boolean und Programmstrukt
- Seite 97 und 98: 3.1 int, boolean und Programmstrukt
- Seite 99 und 100: 3.1 int, boolean und Programmstrukt
- Seite 101 und 102: 3.1 int, boolean und Programmstrukt
- Seite 103 und 104: 3.1 int, boolean und Programmstrukt
- Seite 105 und 106: 3.2 Unicode und char } } textArea.a
- Seite 107 und 108: 3.2 Unicode und char Farben sind in
- Seite 109 und 110: 3.2 Unicode und char for (int i=0;i
- Seite 111 und 112: 3.3 Zusammenfassung Beschreibung We
- Seite 113 und 114: 4.1 Strings 4Strings Komplexe Daten
- Seite 115 und 116: 4.2 Einfache versus komplexe Datent
- Seite 117 und 118: 4.2 Einfache versus komplexe Datent
- Seite 119 und 120: 4.3 Type Casting Will man aber zwei
- Seite 121 und 122: 4.3 Type Casting 4.3.1.3 Datentyp b
- Seite 123 und 124: 4.4 Zusammenfassung 4.4 Zusammenfas
- Seite 125 und 126: 5.1 ActionEvent und ActionListener
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