Eine gute Antwort wäre:

Die Schleife wird zur Endlos-Schleife. Diese zwei Zeichen bewirken einen großen Unterschied!

Nur zwei Zeichen anders

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.

FRAGE 10:

Was würde passieren, wenn die geschweifte Klammer nach dem else und ihre dazu gehörige Klammer entfernt würden?

Inhaltsverzeichnis