zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Der gesamte Ausdruck wird falsch sein, da && zwei false zu einem false verbindet.

mehl >= 4 && zucker >= 2
---------    -----------
   false   &&    false
   -------------------
          false

Plätzchen-Programm

Tatsächlich, sobald das erste false ermittelt ist, wissen Sie, dass der gesamte Ausdruck false sein muss, da false AND irgendwas false ergibt.

mehl >= 4 && zucker >= 2
 ---------    ------------
   false   &&  spielt keine Rolle
      ---------------
          false

Aus Gründen der Optimierung wertet Java einen Ausdruck nur soweit aus, wie es nötig ist, um den Wert des gesamten Ausdrucks zu bestimmen. Wenn das Programm läuft, sobald gefunden wird, dass mehl >= 4 false ist, wird der gesamte Ausdruck falsch sein und der false-Zweig der if-Anweisung wird genommen. Dieser Typ von Optimierung wird Short-Circuit Auswertung genannt. (Betrachten Sie dazu das Kapitel zu diesem Thema.)

Hier ist eine vollständige Java Version des Plätzchen-Programms.

// Plätzchenzutaten überprüfen
//
import java.util.Scanner;
class PlaetzchenTester
{
  public static void main (String[] args)
  {
    // einen Scanner und zwei Integer-Variablen deklarieren
    Scanner scan = new Scanner( System.in );
    int zucker, mehl;

    // Anzahl der Tassen Mehl einholen
    System.out.println("Wie viel Mehl haben Sie?");
    mehl = scan.nextInt();

    // Anzahl der Tassen Zucker einholen
    System.out.println("Wie viel Zucker haben Sie?");
    zucker = scan.nextInt();

    // überprüfen, ob es genug von beiden Zutaten gibt
    if ( mehl >= 4 && zucker >= 2 )
       System.out.println("Genug fuer Plaetzchen!" );
    else
      System.out.println("Sorry...." );
  }
}

Testen Sie das Programm mit verschiedenen Werten für Mehl und Zucker, um zu überprüfen, dass Sie verstehen wie AND funktioniert.

FRAGE 6:

Testen Sie das Programm mit der exakten Mindestmenge an Mehl und Zucker. Können Sie Plätzchen backen?