Wir ändern die Bedingung in der if
-Anweisung, so dass nur Integer im Bereich von 0 bis 20 zugelassen sind.
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."); } } }
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?