zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Schlechter Durchschnitt

Werte testen

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


FRAGE 6:

Wir schreiben das Programm um, indem wir verschachtelte if-Anweisungen verwenden:

int zaehler = 0;
int gesamt = 345;

if (  )
{
  if (  )
    System.out.println("Akzeptabler Durchschnitt");
  else
    System.out.println("Schlechter Durchschnitt");
}
else
  System.out.println("Keine Werte zum Durchschnitt bilden!");