Fakultaet.java 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import javax.swing.JOptionPane;
  2. import java.util.Arrays;
  3. import flanagan.io.Db;
  4. /**
  5. * Das Program liest eine ganze Zahl N (0 <= N <= 20) und
  6. * berechnet den Wert von N! = 1 * 2 * ... * (N - 1) * N, wobei
  7. * 0! = 1 (nach Definition)
  8. *
  9. * @author Victor Yakhontov
  10. * @version Version vom 29.11.12
  11. */
  12. public class Fakultaet
  13. {
  14. public static void main(String [] args)
  15. {
  16. int N = 0; // Deklaration von N - Variablen vom je Datentyp int
  17. /* Bedeutung:
  18. * N = die gesuchte Fakultaet (0 <= N <= 20)
  19. * n = laufende Fakultaet-Zahl
  20. * resn = leufende Fakultaet: resn = (n - 1)!, n = 0, 1, 2, ... N
  21. * res = Resultat: res = n! = n*(n - 1)!, n = 0, 1, 2, ... N
  22. * = n* resn
  23. */
  24. // Nun wird es gecheckt, ob die Anzahl der Input-Parameter >= 2
  25. boolean valid = false;
  26. try {
  27. N = Db.readInt("Gib die Grundzahl als eine Integer-Zahl ein und " +
  28. "bestätige mit ENTER ");
  29. } catch (NumberFormatException e) {
  30. System.exit(1);
  31. }
  32. // Es wird nun gecheckt, ob der Input-Parameter die folgenden
  33. // Bedingungen erfuellen: N >= 0 und N <= 20
  34. if ( N < 0 )
  35. {
  36. Db.show(
  37. "Falsche Eingabe: der Input-Parameter N < 0 \n"+
  38. "Probieren Sie nochmals! Das Programm ist sofort beendet!");
  39. System.exit(1);
  40. }
  41. else if ( N >= 21 )
  42. {
  43. Db.show(
  44. "Falsche Eingabe: der Input-Parameter N > 20 \n"+
  45. "Probieren Sie nochmals! Das Programm ist sofort beendet!");
  46. System.exit(1);
  47. }
  48. // An dieser Stelle gilt: 0 <= N <= 20
  49. Db.show(
  50. "Die Eingabe ist OK! Sie möchten also " + N + "! berechnen!");
  51. // Spezialfall: 0! = 1
  52. if (N == 0) {
  53. System.out.println("Fakultaet " + N + "! = " + 1);
  54. System.exit( 0 );
  55. }
  56. System.out.format("\n%s \t n! \n-------------------------------------", " n", N);
  57. int res = 1, resn = 1; // Deklaration von 2 Variablen vom je Datentyp int
  58. /* Initialisierung der Variablen res und resn
  59. * Diese sind erforderlich fuer die Schleife ueber n = 1, 2, ... N
  60. */
  61. // Schleife ueber n = 1, 2, 3, ... N
  62. for (int n = 1; n <= N; n++) // FOR-Schleife ueber die Variable n = 1,2, ... , N
  63. {
  64. res = n*resn; // n! = n*(n - 1)! = laufender n-Wert mal "resn"
  65. resn = res; // neuer resn = n!
  66. System.out.format("\n %2d \t %-20d", n, res);
  67. }
  68. System.out.format("\n-------------------------------------");
  69. JOptionPane.showMessageDialog (null,
  70. N + "! = " + res,
  71. "Lösung", JOptionPane.INFORMATION_MESSAGE);
  72. }
  73. }