fakultaet.java 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. public class fakultaet
  10. {
  11. public static void main(String [] args)
  12. {
  13. int N = 0;
  14. /* Bedeutung:
  15. * N = die gesuchte Fakultaet (0 <= N <= 20)
  16. * n = laufende Fakultaet-Zahl
  17. * resn = leufende Fakultaet: resn = (n - 1)!, n = 0, 1, 2, ... N
  18. * res = Resultat: res = n! = n*(n - 1)!, n = 0, 1, 2, ... N
  19. * = n* resn
  20. */
  21. boolean valid = false;
  22. try {
  23. N = Db.readInt("Gib die Grundzahl als eine Integer-Zahl ein und " +
  24. "bestätige mit ENTER ");
  25. } catch (NumberFormatException e) {
  26. System.exit(1);
  27. }
  28. // validate that: N >= 0 und N <= 20
  29. if ( N < 0 ) {
  30. Db.show(
  31. "Falsche Eingabe: der Input-Parameter N < 0 \n"+
  32. "Probieren Sie nochmals! Das Programm ist sofort beendet!");
  33. System.exit(1);
  34. } else if ( N >= 21 ) {
  35. Db.show(
  36. "Falsche Eingabe: der Input-Parameter N > 20 \n"+
  37. "Probieren Sie nochmals! Das Programm ist sofort beendet!");
  38. System.exit(1);
  39. }
  40. // validation prompt
  41. Db.show(
  42. "Die Eingabe ist OK! Sie möchten also " + N + "! berechnen!");
  43. // special case: 0! = 1
  44. if (N == 0) {
  45. System.out.println("Fakultaet " + N + "! = " + 1);
  46. System.exit( 0 );
  47. }
  48. System.out.format("\n%s \t n! \n-------------------------------------", " n", N);
  49. int res = 1, resn = 1;
  50. // loop over n = 1, 2, 3, ... N
  51. for (int n = 1; n <= N; n++) // FOR-Schleife ueber die Variable n = 1,2, ... , N
  52. {
  53. res = n*resn; // n! = n*(n - 1)! = laufender n-Wert mal "resn"
  54. resn = res; // neuer resn = n!
  55. System.out.format("\n %2d \t %-20d", n, res);
  56. }
  57. System.out.format("\n-------------------------------------\n");
  58. // solution prompt
  59. JOptionPane.showMessageDialog (null,
  60. N + "! = " + res,
  61. "Lösung", JOptionPane.INFORMATION_MESSAGE);
  62. }
  63. }