zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Wir ändern die Bedingung in der if-Anweisung, so dass nur Integer im Bereich von 0 bis 20 zugelassen sind.

Boole'scher Ausdruck

Hier ist das korrekte Programm.

import java.util.Scanner;

// Der Anwender gibt Integer N ein.
// Das Programm berechnet N Fakultät.
class Fakultaet
{
  public static void main (String[] args )
  {
    Scanner scan = new Scanner( System.in );
    long n, fakultaet = 1;

    System.out.println( "Geben Sie N ein:" );
    n = scan.nextLong();

    if (  n >= 0 && n <= 20 )
    {
      while ( n > 1 )
      {
        fakultaet = fakultaet * n;
        n   = n - 1;
      }
      System.out.println( "Fakultaet ist " + fakultaet );
    }
    else
    {
      System.out.println("N muss zwischen 0 und 20 sein");
      System.out.println("Fakultaet fur N kleiner 0 ist nicht definiert.");
      System.out.println("Fakultaet fur N groesser 20 verursacht Overflow.");
    }
  }
}

FRAGE 10:

Dieses Programm berechnet N! für einen sehr begrenzten Bereich von N. Variablen von Typ double haben einen sehr viel größeren Bereich als Ganzzahlen. Würde die Verwendung von double-Variablen das Problem lösen?