12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- 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);
- }
- }
|