Advertisement
Gigli-0neiric

Untitled

Dec 9th, 2014
439
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.54 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.Calendar;
  5. import java.util.GregorianCalendar;
  6.  
  7. /**
  8.  * Die Klasse "EinAusgabe" dient zum Einlesen der Variablen und zum Ausgeben des
  9.  * Tilgungsplans.
  10.  *
  11.  * @author Tobias Stelter, Kai Nortmann
  12.  *
  13.  */
  14.  
  15. public class EinAusgabe {
  16.     private int anfangsmonat = 0; // Fuer eine Implemenation mit
  17.     private int anfangsjahr = 0; // F�r eine Implemenation mit Datumspruefung
  18.     BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  19.  
  20.     /**
  21.      * Die Methode "meldungAusgeben()" dient Ausgeben einer Meldung.
  22.      *
  23.      * @param meldung
  24.      */
  25.  
  26.     public void ausgebenMeldung(String meldung) {
  27.         System.out.println(meldung);
  28.     }
  29.  
  30.     /**
  31.      * Die Methode " tilgungsPlanAusgeben" gibt den Tilgungsplan fÔøΩr gesamten
  32.      * Zeitraum aus. Der Tilgungsplan enthÔøΩlt den Zahlmonat, die Rate, die
  33.      * Zinsen, die Tilgung und den Rest. Durch "printf" und den entsprechenden
  34.      * Paramtern, wird die Ausgabe wie gewuenscht formatiert.
  35.      *
  36.      * @param tilgungsplan
  37.      */
  38.  
  39.     public void ausgebenTilgungsPlan(String tilgungsplan) {
  40.         String[] splitArray = tilgungsplan.split(";");
  41.  
  42.         for (int i = 0; i < splitArray.length; i++) {
  43.             System.out.printf("%-25s", splitArray[i]);
  44.             if ((i + 1) % 5 == 0)
  45.                 System.out.println("");
  46.         }
  47.     }
  48.  
  49.     /**
  50.      * Die Methode "leseIntZahlEin()" dient zum Einlesen einer Int-Zahl. Die
  51.      * IOExeption und NumberFormatException werden abgefangen. Bei einer
  52.      * Fehlermeldung wird die Methode nochmals ausgefÔøΩhrt.
  53.      *
  54.      * @return zahl
  55.      */
  56.  
  57.     public int einleseIntZahl() {
  58.         boolean fehler = true;
  59.         int zahl = 0;
  60.         while (fehler == true) {
  61.             try {
  62.                 zahl = Integer.parseInt(br.readLine());
  63.                 fehler = false;
  64.             } catch (NumberFormatException e) {
  65.                 System.out
  66.                         .print("Die Eingabe war keine Zahl! Bitte erneut eingeben:");
  67.             } catch (IOException e) {
  68.                 System.out.print("Einlesen fehlgeschlagen!");
  69.             }
  70.         }
  71.         return zahl;
  72.     }
  73.  
  74.     /**
  75.      * Die Methode "anfangsJahrEinlesen" liest ein Jahr ein und gibt es zurueck.
  76.      * Die IOExeption und NumberFormatException werden abgefangen. Bei einer
  77.      * Fehlermeldung wird die Methode nochmals ausgefÔøΩhrt.
  78.      *
  79.      * @return anfangsjahr
  80.      */
  81.  
  82.     public int einlesenAnfangsJahr() {
  83.         System.out.print("Geben Sie einen Anfangsjahr ein: ");
  84.         return einleseIntZahl();
  85.     }
  86.  
  87.     /**
  88.      * Die "anfangsMonatEinlesen" liest einen Anfangsmonat ein und gibt ihn
  89.      * zurueck. Die IOExeption und NumberFormatException werden abgefangen. Bei
  90.      * einer Fehlermeldung wird die Methode nochmals ausgefÔøΩhrt. Der
  91.      * eingelesene Monat muss groesser sein als 0 und kleiner als 13.
  92.      *
  93.      * @return anfangsmonat
  94.      */
  95.  
  96.     private int einlesenAnfangsMonat() {
  97.         int anfangsmonat = 0;
  98.  
  99.         do {
  100.             System.out.print("Geben Sie einen Anfangsmonat ein: ");
  101.             anfangsmonat = einleseIntZahl();
  102.             if (anfangsmonat > 12 || anfangsmonat < 1) {
  103.                 System.out
  104.                         .print("Geben Sie einen Monat zwischen 1 und 12 ein: ");
  105.             }
  106.         } while (anfangsmonat > 12 || anfangsmonat < 1);
  107.         return anfangsmonat;
  108.     }
  109.  
  110.     /**
  111.      * Die Methode "leseDoubleZahlEin()" dient zum Einlesen einer Double-Zahl.
  112.      * Die IOExeption und NumberFormatException werden abgefangen. Bei einer
  113.      * Fehlermeldung wird die Methode nochmals ausgefuehrt.
  114.      *
  115.      * @return zahl
  116.      */
  117.  
  118.     public double einlesenDoubleZahl() {
  119.         boolean fehler = true;
  120.         double zahl = 0;
  121.  
  122.         while (fehler == true) {
  123.             try {
  124.                 // Falls ein "," eingegeben wird, wandelt er dies in einen Punkt
  125.                 // um!
  126.                 zahl = Double.parseDouble(br.readLine().replace(",", "."));
  127.                 fehler = false;
  128.             } catch (NumberFormatException e) {
  129.                 System.out
  130.                         .print("Die Eingabe war keine Zahl! Bitte erneut eingeben:");
  131.             } catch (IOException e) {
  132.                 System.out.print("Einlesen fehlgeschlagen!");
  133.             }
  134.         }
  135.         return zahl;
  136.     }
  137.  
  138.     /**
  139.      * Die Methode "kredithoeheEinlesen()" dient zum Einlesen einer
  140.      * anfaenlglichen Verschuldung. Die IOExeption und NumberFormatException
  141.      * werden abgefangen. Bei einer Fehlermeldung wird die Methode nochmals
  142.      * ausgefuehrt.Falls die Kredithoehe kleiner als 1 ist, wird darauf
  143.      * hingewisen, dass die Eingabe nochmals getaetigt werden soll.
  144.      *
  145.      * @return anfangsVerschuldung
  146.      */
  147.  
  148.     public double einlesenKreditBetrag() {
  149.         double zahl = 0.0;
  150.  
  151.         while (zahl <= 0) {
  152.             System.out.print("Geben Sie den Kreditbetrag: ");
  153.             zahl = einlesenDoubleZahl();
  154.             if (zahl <= 0)
  155.                 System.out.print("Der Betrag mus groesser als 0 sein!");
  156.         }
  157.  
  158.         return zahl;
  159.     }
  160.  
  161.     /**
  162.      * Die Methode "tilgungsRateEinlesen" dient zum Einlesen einer Tilgungsrate.
  163.      * Die IOExeption und NumberFormatException werden abgefangen. Bei einer
  164.      * Fehlermeldung wird die Methode nochmals ausgefÔøΩhrt.
  165.      *
  166.      * @return tilgungsrate
  167.      */
  168.  
  169.     public double einlesenMonatlicheRate() {
  170.         double zahl = 0;
  171.  
  172.         do {
  173.             System.out.print("Geben Sie die Tilgungsrate: ");
  174.             zahl = einlesenDoubleZahl();
  175.             if (zahl <= 0) {
  176.                 System.out
  177.                         .print("Die Rate muss mindestens einen Euro betragen.");
  178.             }
  179.         } while (zahl <= 0);
  180.  
  181.         return zahl;
  182.     }
  183.  
  184.     /**
  185.      * Die Methode "zinssatzEinlesen" liest einen Zinsatz ein. Die IOExeption
  186.      * und NumberFormatException werden abgefangen. Bei einer Fehlermeldung wird
  187.      * die Methode nochmals ausgefÔøΩhrt. Desweiteren muss der Zinssatz groesser
  188.      * als Null sein.
  189.      *
  190.      * @return zinssatz
  191.      */
  192.  
  193.     public double einlesenZinssatz() {
  194.         double zahl = 0.0;
  195.  
  196.         while (zahl <= 0) {
  197.             System.out.print("Geben Sie den Zinssatz in % ein: ");
  198.             zahl = einlesenDoubleZahl() / 100;
  199.             if (zahl <= 0) {
  200.                 System.out.print("Der Zinssatz muss groesser als 0 sein!");
  201.             }
  202.         }
  203.  
  204.         return zahl;
  205.     }
  206.  
  207.     /**
  208.      * Die Methode ''generiereAbschlagSummenZahlungsforderung()'' dient Ausgeben
  209.      * der Abschlagssumme.
  210.      *
  211.      * @param betrag
  212.      * @return
  213.      */
  214.  
  215.     public String generiereAbschlagSummenZahlungsforderung(String betrag) {
  216.         return "Die restliche Summe muss mit einer Abschlagsumme in Hoehe von "
  217.                 + betrag + " beglichen werden!\n\n\n";
  218.     }
  219.  
  220.     /**
  221.      * Die Methode "laufzeitEinlesen" liest die Laufzeit in Jahren ein. Die
  222.      * minimale Laufzeit betraegt ein Jahr und darf nicht laenger als 30 Jahre
  223.      * sein. Die IOExeption und NumberFormatException werden abgefangen. Bei
  224.      * einer Fehlermeldung wird die Methode nochmals ausgefuehrt.
  225.      *
  226.      * @return laufzeit
  227.      */
  228.  
  229.     public int laufzeitEinlesen() {
  230.         int laufzeit = 0;
  231.         char jaNein = 'e';
  232.         boolean fehler = true;
  233.  
  234.         System.out.print("Mochten Sie die Laufzeit eingeben? j/n");
  235.  
  236.         while (fehler == true) {
  237.             while (jaNein != 'j' && jaNein != 'n') {
  238.                 try {
  239.                     String jaNein2 = br.readLine();
  240.                     jaNein = jaNein2.charAt(0);
  241.                     fehler = false;
  242.  
  243.                     if (jaNein != 'j' && jaNein != 'n') {
  244.                         System.out.print("Geben Sie 'j' oder 'n' ein.");
  245.                     }
  246.                     if (jaNein == 'j') {
  247.                         System.out
  248.                                 .print("Auf welchen Zeitraum soll die Laufzeit festgesetzt werden?\nGeben Sie die Monate ein: ");
  249.                         laufzeit = laufzeitEinlesenMonate();
  250.                     }
  251.  
  252.                 } catch (IOException e) {
  253.                     e.printStackTrace();
  254.                 } catch (StringIndexOutOfBoundsException e) {
  255.                     System.out.println("Sie muessen etwas eingeben.");
  256.                 }
  257.             }
  258.         }
  259.         return laufzeit;
  260.     }
  261.  
  262.     private int laufzeitEinlesenMonate() {
  263.  
  264.         int laufzeit = 0;
  265.  
  266.         do {
  267.             laufzeit = einleseIntZahl();
  268.  
  269.             if (laufzeit > 360) {
  270.                 System.out.println("Die maximale Laufzeit betraegt 30 Jahre!");
  271.                 System.out.println("Geben Sie die Laufzeit ein: ");
  272.             }
  273.             if (laufzeit < 1) {
  274.                 System.out
  275.                         .println("Die minimale Vertragslaufzeit betraegt mindestens ein Jahr.");
  276.                 System.out.println("Geben Sie die Laufzeit ein: ");
  277.             }
  278.         } while (laufzeit > 360 || laufzeit < 1);
  279.  
  280.         return laufzeit;
  281.  
  282.     }
  283.  
  284.     /**
  285.      * Die Methode "generiereLaufZeitZuLangZeile()" dient Ausgeben einer
  286.      * Fehlermeldung, falls die Laufzeit zu lang ist.
  287.      *
  288.      * @param eingegebeneLaufzeit
  289.      * @param echteLaufzeit
  290.      * @return
  291.      */
  292.     public String pruefeKreditLaufzeitFehler(int eingegebeneLaufzeit,
  293.             int echteLaufzeit) {
  294.         if (eingegebeneLaufzeit > echteLaufzeit) {
  295.             return "Die Laufzeit war zu lang! Sie wurde von "
  296.                     + eingegebeneLaufzeit + " auf " + echteLaufzeit
  297.                     + " Monate gekuerzt!;;;;;;;;;;;;;;";
  298.         }
  299.         if (eingegebeneLaufzeit < echteLaufzeit) {
  300.             return "Die Laufzeit war zu kurz! Mit den eingebenen Daten h‰tte die Laufzeit "
  301.                     + echteLaufzeit
  302.                     + " Monate betragen muessen, aber war"
  303.                     + eingegebeneLaufzeit + " Monate!;;;;;;;;;;;;;;";
  304.         }
  305.         return "";
  306.     }
  307.  
  308.     /**
  309.      * Die Methode ''einlesenAnfangsJahrKeineVergangenheit()'' liest ein
  310.      * Anfangsjahr ein. Die Methode wird solange wiederholt bis das Anfangsjahr
  311.      * größer als das aktuelle Jahr ist.
  312.      *
  313.      * @return
  314.      * @throws IOException
  315.      */
  316.  
  317.     private int einlesenAnfangsJahrKeineVergangenheit() {
  318.  
  319.         Calendar cal = new GregorianCalendar();
  320.         int aktuellesJahr = cal.get(Calendar.YEAR);
  321.         int aktuellerMonat = cal.get(Calendar.MONTH) + 1;
  322.         int anfangsjahr = einlesenAnfangsJahr();
  323.  
  324.         if (this.anfangsjahr < aktuellesJahr) {
  325.             System.out.println("Das Anfangsdatum liegt in der Vergangenheit!");
  326.  
  327.         }
  328.         if (this.anfangsjahr == aktuellesJahr && anfangsmonat == aktuellerMonat) {
  329.             System.out
  330.                     .println("Der Vetrag kann für diesen Monat nicht mehr abgeschlossen werden!");
  331.  
  332.         }
  333.         if (this.anfangsjahr == aktuellesJahr
  334.                 && this.anfangsmonat < aktuellerMonat) {
  335.             System.out.println("Der Anfangsmonat liegt in der Vergangenheit!");
  336.  
  337.         }
  338.  
  339.         return anfangsjahr;
  340.  
  341.     }
  342.  
  343.     /**
  344.      * Die Methode "einlesenMonatJahrKeineVergangenheit()" liest einen
  345.      * Anfangsmonat ein. Wenn der Anfangsmonat kleiner oder gleich dem aktuellen
  346.      * Monat ist, wird die Methode so lange wiederholt bis der aktuelle Monat
  347.      * und das aktuelle Jahr größer sind als das eingegebene Jahr und der Monat.
  348.      */
  349.  
  350.     public void einlesenMonatJahrKeineVergangenheit() {
  351.  
  352.         Calendar cal = new GregorianCalendar();
  353.         int aktuellesJahr = cal.get(Calendar.YEAR);
  354.         int aktuellerMonat = cal.get(Calendar.MONTH) + 1;
  355.  
  356.         boolean fehler = false;
  357.  
  358.         do {
  359.  
  360.             fehler = false;
  361.  
  362.             this.anfangsmonat = einlesenAnfangsMonat();
  363.             this.anfangsjahr = einlesenAnfangsJahrKeineVergangenheit();
  364.  
  365.             if (this.anfangsmonat <= aktuellerMonat
  366.                     && this.anfangsjahr <= aktuellesJahr) {
  367.                 fehler = true;
  368.             }
  369.  
  370.         } while (fehler == true);
  371.  
  372.     }
  373.  
  374.     /**
  375.      * Die Methode "getMonat()" gibt den Monat zurück.
  376.      */
  377.    
  378.     public int getMonat() {
  379.         return this.anfangsmonat;
  380.     }
  381.  
  382.     /**
  383.      * Die Methode "getJahr()" gibt das Jahr zurück.
  384.      * @return
  385.      */
  386.    
  387.     public int getJahr() {
  388.         return this.anfangsjahr;
  389.     }
  390. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement