Die Schleife wird zur Endlos-Schleife. Diese zwei Zeichen bewirken einen großen Unterschied!
Hier ist ein Fragment des Programms, mit den entfernten geschweiften Klammern:
if ( n >= 0 ) { while ( n > 1 ) fak = fak * n ; n = n - 1 ; System.out.println( "Fakultät ist " + fak ); } else { System.out.println("N muss 0 oder groesser sein"); }
Dieses Fragment sieht OK aus, aber denken Sie daran, dass Leerzeilen und Einrücken für Menschen aber nicht für den Compiler sind. Was der Compiler sieht ist:
if ( n >= 0 ) { while ( n > 1 ) fak = fak * n ; n = n - 1 ; System.out.println( "Fakultät ist " + fak ); } else { System.out.println("N muss 0 oder groesser sein"); }
Jetzt ist es klar, dass n
sich nicht ändert.
Die Bedingung n > 1 ist immer
wahr und die Schleife läuft für immer.