Schlechter Durchschnitt
Manchmal verwendet eine if
- oder while
-Anweisung
den Short-Circuit AND-Operator, um eine Division durch Null oder eine andere leicht zu testende Bedingung zu vermeiden, wie in diesem Beispiel.
Das Gleiche könnte mit einer verschachtelten if
-Anweisung erreicht werden, aber auf Kosten der Übersichtlichkeit, und das könnte ein Programmierer zu vermeiden suchen. Der erste Vergleich zaehler > 0
agiert als eine Art Wächter, der die Auswertung daran hindert die Division durch Null zu erreichen.
int zaehler = 0; int gesamt = 345; if ( zaehler > 0 && gesamt / zaehler > 80 ) System.out.println("Akzeptabler Durchschnitt"); else System.out.println("Schlechte Durchschnitt");
Das Beispiel-Programm würde nicht funktionieren und mit einer Fehlermeldung abbrechen, wenn der Non-Short-Circuit &
-Operator verwendet würde.
Der zweite Operand würde eine Division durch Null durchführen, auch wenn die Auswertung des ersten Operanden ein false
ergibt. Das Beispiel funktioniert wie folgt:
int zaehler = 0; int gesamt = 345; if ( zaehler > 0 && gesamt / zaehler > 80 ) --------- false, also wird keine weitere Auswertung durchgeführt
Wir schreiben das Programm um, indem wir verschachtelte if
-Anweisungen verwenden: