Nein. Der Programmierer wollte vermutlich, dass die drei Anweisungen nach dem else ein Teil des False-Blocks sind, aber er hat die geschweiften Klammern nicht verwendet, um das zu zeigen.
Der False-Block wurde nicht innerhalb geschweifter Klammern gestellt:
if ( zahl < 0 )
System.out.println("Die Zahl " + zahl + " ist negativ");
else
System.out.println("Die Zahl " + zahl + " ist positiv");
System.out.print ("Positive Zahlen sind groesser ");
System.out.println("oder gleich 0 ");
System.out.println("Good-bye fuer jetzt");
Unser für Menschen freundliches Einrücken zeigt, was wir wollen. Aber der Compiler ignoriert Einrückungen . Er wird bloß nach geschweiften Klammern suchen. Er wird etwas sehen, das äquivalent zu diesem ist:
if ( zahl < 0 )
System.out.println("Die Zahl " + zahl + " ist negativ"); // True-Zweig
else
System.out.println("Die Zahl " + zahl + " ist positiv"); // False-Zweig
System.out.print ("Positive Zahlen sind groesser "); // wird immer ausgeführt
System.out.println("oder gleich 0 "); // wird immer ausgeführt
System.out.println("Good-bye fuer jetzt"); // wird immer ausgeführt
Wie können wir das Problem beheben?