Bedingungen verknüpfen

Mit den bisher besprochenen Abfragen haben wir nur die Möglichkeit eine Bedingung zu prüfen, diese für gut oder schlecht zu befinden und dann die nächste Bedingung zu prüfen. Praktisch wäre es, wenn man Bedingungen miteinander verknüpfen könnte. Zum Beispiel, wenn Bedingung A zutrifft und Bedingung B auch zutrifft, mache etwas. Wenn eine der beiden Bedingungen nicht zutrifft, dann mache nichts. Es könnte aber auch sein, ich will prüfen, ob Bedingung A zutrifft, Bedingung B aber nicht und will dann etwas machen.

In JAVA kann man sogenannte logische Operatoren benutzen, um Bedingungen zu verknüpfen. Mit diesen Operatoren können bool'sche Ausdrücke miteinander verbunden werden. Unsere beiden Beispiele von oben würden in JAVA so aussehen:

                 C = A & B  C ist WAHR wenn A UND B WAHR sind.
                 C = A | B  C ist WAHR wenn A ODER B WAHR ist.

Es gibt folgende logische Operatoren in JAVA:

  • & entspricht UND : Der Ausdruck ist WAHR, wenn beide Bedingungen WAHR sind.
  • | entspricht ODER : Der Ausdruck ist WAHR, wenn mindestens eine der Bedingungen WAHR ist.
  • ^ entspricht exklusivem ODER : Der Ausdruck ist WAHR, wenn genau eine der Bedingungen WAHR ist.
  • && entspricht UND : Der zweite Ausdruck wird erst Ausgewertet, wenn der erste Ausdruck WAHR ist
  • || entspricht ODER : Wenn der erste Ausdruck schon WAHR ist, wird der zweite nicht mehr ausgewertet.
  • ! entspricht NICHT : Der Ausdruck ist WAHR, wenn die Bedingung FALSCH ist.

Uiuiuiui, was ???? Wer ist WAHR, wenn es nicht FALSCH ist ????

Nur ruhig bleiben, alles nicht so schlimm. Bool'sche Ausdrücke sind nicht so kompliziert, wie es vielleicht aussieht. Als erstes, ein bool'scher Ausdruck kann nur zwei Zustände haben, er ist entweder WAHR oder er ist FALSCH. Klingt doch erst einmal überschaubar, oder?

Im Prinzip kann ich Bedingungen in JAVA mit drei Operatoren verknüpfen. Ich habe UND, ODER und NICHT zur Verfügung. Klingt auch überschaubar, nicht wahr?
Ein Beispiel, ich möchte herausfinden, wann es Hitzefrei gibt. Die Bedingung ist, dass die Temperatur über 30°C sein muss und natürlich muss auch ein Schultag sein. Also, Schultag = WAHR UND Temperatur > 30°C = WAHR.
Aus der Mathematik kennt ihr bestimmt die Wahrheitstafeln, unsere würde so aussehen:

                                 Schultag        Temperatur > 30°C       Hitzefrei
                                 -------------------------------------------------
                                 WAHR            WAHR                    WAHR
                                 WAHR            FALSCH                  FALSCH
                                 FALSCH          WAHR                    FALSCH
                                 FALSCH          FALSCH                  FALSCH

Es gibt also nur Hitzefrei, wenn beide Bedingungen WAHR sind. Das nennt man eine UND-Verknüpfung.

In JAVA würde man das ganze etwa so schreiben:


                                 [...]
                                 if(isSchultag & Temp > 30) {
                                         isFrei();
                                 else
                                         isSchule();
                                 }
                                 [...]

Man könnte auch prüfen ob Wochenende oder Feiertag ist, denn dann ist Schulfrei.
Die Wahrheitstafel sieht dann so aus:

                                 Wochenende      Feiertag        Schulfrei
                                 -----------------------------------------
                                 WAHR            WAHR            WAHR
                                 WAHR            FALSCH          WAHR
                                 FALSCH          WAHR            WAHR
                                 FALSCH          FALSCH          FALSCH


Es ist also keine Schule, wenn entweder Feiertag, Wochenende oder beides ist. Das nennt man eine ODER-Verknüpfung.

In JAVA würde man das ganze etwa so schreiben:


                                 [...]
                                 if(isSchultag | isFeiertag) {
                                         isFrei();
                                 else
                                         isSchule();
                                 }
                                 [...]

Glücklicherweise gibt es auch Kältefrei. Jetzt haben wir also eine Bedingung zusätzlich, die nicht gleichzeitig mit dem Hitzefrei stattfinden kann, da die Bedingung für Kältefrei ist das die Temperatur unter -10°C sein muss.
Unsere Wahrheitstafel sieht dann so aus:

                         Schultag        Temperatur > 30°C       Temperatur < -10°C      Schulfrei
                         -------------------------------------------------------------------------
                         WAHR            WAHR                    FALSCH                  WAHR
                         WAHR            FALSCH                  WAHR                    WAHR
                         WAHR            FALSCH                  FALSCH                  FALSCH
                         FALSCH          WAHR                    FALSCH                  FALSCH
                         FALSCH          FALSCH                  WAHR                    FALSCH
                         FALSCH          FALSCH                  FALSCH                  FALSCH

Da die beiden Bedingungen nicht zur selben Zeit WAHR sein können, es ist eher unwahrscheinlich, dass es gleichzeitig +30°C und -10°C ist, nennt man diese Verknüpfung ein exklusives ODER.

In JAVA würde man das ganze etwa so schreiben:


                                 [...]
                                 if(isSchultag & (Temp > 30 ^ Temp < -10)) {
                                         isFrei();
                                 else
                                         isSchule();
                                 }
                                 [...]

Der letzte Operator ist !, dieser Operator negiert den Ausdruck, ist also WAHR, wenn der Ausdruck FALSCH ist.

In JAVA würde man das ganze etwa so schreiben:


                                 [...]
                                 if(!isSchultag) {
                                         isFrei();
                                 else
                                         isSchule();
                                 }
                                 [...]

Weiter geht es mit dem Eingeben und Ausgeben von Daten.

Mit JAVA programmieren

Als Entwicklungsumgebung benutze ich NetBeans 7.

JAVA gibt es hier.