Die Schleife wird eine 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 Null 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 Null 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.