Der gesamte Ausdruck wird falsch sein, da &&
zwei false
zu einem false
verbindet.
mehl >= 4 && zucker >= 2 --------- ----------- false && false ------------------- false
Tatsächlich, sobald das erste false
ermittelt ist, wissen wir, dass der gesamte Ausdruck false
sein muss, da false
AND und irgendwas immer 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.
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...." ); } }
Wir testen das Programm mit verschiedenen Werten für Mehl und Zucker, um zu verstehen wie AND funktioniert.
Wir testen das Programm mit der exakten Mindestmenge an Mehl und Zucker. Können wir Plätzchen backen?