import javax.swing.JOptionPane; import java.util.Arrays; import flanagan.io.Db; /** * Das Program liest eine ganze Zahl N (0 <= N <= 20) und * berechnet den Wert von N! = 1 * 2 * ... * (N - 1) * N, wobei * 0! = 1 (nach Definition) * * @author Victor Yakhontov * @version Version vom 29.11.12 */ public class Fakultaet { public static void main(String [] args) { int N = 0; // Deklaration von N - Variablen vom je Datentyp int /* Bedeutung: * N = die gesuchte Fakultaet (0 <= N <= 20) * n = laufende Fakultaet-Zahl * resn = leufende Fakultaet: resn = (n - 1)!, n = 0, 1, 2, ... N * res = Resultat: res = n! = n*(n - 1)!, n = 0, 1, 2, ... N * = n* resn */ // Nun wird es gecheckt, ob die Anzahl der Input-Parameter >= 2 boolean valid = false; try { N = Db.readInt("Gib die Grundzahl als eine Integer-Zahl ein und " + "bestätige mit ENTER "); } catch (NumberFormatException e) { System.exit(1); } // Es wird nun gecheckt, ob der Input-Parameter die folgenden // Bedingungen erfuellen: N >= 0 und N <= 20 if ( N < 0 ) { Db.show( "Falsche Eingabe: der Input-Parameter N < 0 \n"+ "Probieren Sie nochmals! Das Programm ist sofort beendet!"); System.exit(1); } else if ( N >= 21 ) { Db.show( "Falsche Eingabe: der Input-Parameter N > 20 \n"+ "Probieren Sie nochmals! Das Programm ist sofort beendet!"); System.exit(1); } // An dieser Stelle gilt: 0 <= N <= 20 Db.show( "Die Eingabe ist OK! Sie möchten also " + N + "! berechnen!"); // Spezialfall: 0! = 1 if (N == 0) { System.out.println("Fakultaet " + N + "! = " + 1); System.exit( 0 ); } System.out.format("\n%s \t n! \n-------------------------------------", " n", N); int res = 1, resn = 1; // Deklaration von 2 Variablen vom je Datentyp int /* Initialisierung der Variablen res und resn * Diese sind erforderlich fuer die Schleife ueber n = 1, 2, ... N */ // Schleife ueber n = 1, 2, 3, ... N for (int n = 1; n <= N; n++) // FOR-Schleife ueber die Variable n = 1,2, ... , N { res = n*resn; // n! = n*(n - 1)! = laufender n-Wert mal "resn" resn = res; // neuer resn = n! System.out.format("\n %2d \t %-20d", n, res); } System.out.format("\n-------------------------------------"); JOptionPane.showMessageDialog (null, N + "! = " + res, "Lösung", JOptionPane.INFORMATION_MESSAGE); } }