Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.Calendar;
- import java.util.GregorianCalendar;
- /**
- * Die Klasse "EinAusgabe" dient zum Einlesen der Variablen und zum Ausgeben des
- * Tilgungsplans.
- *
- * @author Tobias Stelter, Kai Nortmann
- *
- */
- public class EinAusgabe {
- private int anfangsmonat = 0; // Fuer eine Implemenation mit
- private int anfangsjahr = 0; // F�r eine Implemenation mit Datumspruefung
- Calendar cal = new GregorianCalendar();
- int aktuellesJahr = cal.get(Calendar.YEAR);
- int aktuellerMonat = cal.get(Calendar.MONTH) + 1;
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- /**
- * Die Methode "leseDoubleZahlEin()" dient zum Einlesen einer Double-Zahl.
- * Die IOExeption und NumberFormatException werden abgefangen. Bei einer
- * Fehlermeldung wird die Methode nochmals ausgefuehrt.
- *
- * @return zahl
- */
- public double leseDoubleZahlEin() {
- boolean fehler = true;
- double zahl = 0;
- while (fehler == true) {
- try {
- // Falls ein "," eingegeben wird, wandelt er dies in einen Punkt
- // um!
- zahl = Double.parseDouble(br.readLine().replace(",", "."));
- fehler = false;
- } catch (NumberFormatException e) {
- System.out
- .print("Die Eingabe war keine Zahl! Bitte erneut eingeben:");
- } catch (IOException e) {
- System.out.print("Einlesen fehlgeschlagen!");
- }
- }
- return zahl;
- }
- /**
- * Die Methode "leseIntZahlEin()" dient zum Einlesen einer Int-Zahl. Die
- * IOExeption und NumberFormatException werden abgefangen. Bei einer
- * Fehlermeldung wird die Methode nochmals ausgef�hrt.
- *
- * @return zahl
- */
- public int leseIntZahlEin() {
- boolean fehler = true;
- int zahl = 0;
- while (fehler == true) {
- try {
- zahl = Integer.parseInt(br.readLine());
- fehler = false;
- } catch (NumberFormatException e) {
- System.out
- .print("Die Eingabe war keine Zahl! Bitte erneut eingeben:");
- } catch (IOException e) {
- System.out.print("Einlesen fehlgeschlagen!");
- }
- }
- return zahl;
- }
- /**
- * Die Methode "kredithoeheEinlesen()" dient zum Einlesen einer
- * anfaenlglichen Verschuldung. Die IOExeption und NumberFormatException
- * werden abgefangen. Bei einer Fehlermeldung wird die Methode nochmals
- * ausgefuehrt.Falls die Kredithoehe kleiner als 1 ist, wird darauf
- * hingewisen, dass die Eingabe nochmals getaetigt werden soll.
- *
- * @return anfangsVerschuldung
- */
- public double kreditBetragEinlesen() {
- double zahl = 0.0;
- do {
- System.out.print("Geben Sie die Hoehe des Kredites ein: ");
- zahl = leseDoubleZahlEin();
- if (zahl <= 0) {
- System.out.print("Sie muessen die Kredithoehe angeben!");
- }
- } while (zahl <= 0);
- return zahl;
- }
- /**
- * Die Methode "zinssatzEinlesen" liest einen Zinsatz ein. Die IOExeption
- * und NumberFormatException werden abgefangen. Bei einer Fehlermeldung wird
- * die Methode nochmals ausgef�hrt. Desweiteren muss der Zinssatz groesser
- * als Null sein.
- *
- * @return zinssatz
- */
- public double zinssatzEinlesen() {
- double zahl = 0.0;
- do {
- System.out.print("Geben Sie den Zinssatz in % ein: ");
- zahl = leseDoubleZahlEin() / 100;
- if (zahl <= 0) {
- System.out.print("Der Zinssatz muss groesser als 0 sein.");
- }
- } while (zahl <= 0);
- return zahl;
- }
- /**
- * Die Methode "laufzeitEinlesen" liest die Laufzeit in Jahren ein. Die
- * minimale Laufzeit betraegt ein Jahr und darf nicht laenger als 30 Jahre
- * sein. Die IOExeption und NumberFormatException werden abgefangen. Bei
- * einer Fehlermeldung wird die Methode nochmals ausgef�hrt.
- *
- * @return laufzeit
- */
- public int laufzeitEinlesen() {
- int laufzeit = 0;
- char jaNein = 'e';
- boolean fehler = true;
- System.out.print("Mochten Sie die Laufzeit eingeben? j/n");
- while (fehler == true) {
- while (jaNein != 'j' && jaNein != 'n') {
- try {
- String jaNein2 = br.readLine();
- jaNein = jaNein2.charAt(0);
- fehler = false;
- if (jaNein != 'j' && jaNein != 'n') {
- System.out.print("Geben Sie 'j' oder 'n' ein.");
- }
- if (jaNein == 'j') {
- System.out
- .print("Auf welchen Zeitraum soll die Laufzeit festgesetzt werden?\nGeben Sie die Monate ein: ");
- do {
- laufzeit = leseIntZahlEin();
- if (laufzeit > 3600) {
- System.out
- .println("Die maximale Laufzeit betraegt 30 Jahre!");
- System.out
- .println("Geben Sie die Laufzeit ein: ");
- }
- if (laufzeit < 1) {
- System.out
- .println("Die minimale Vertragslaufzeit betraegt mindestens ein Jahr.");
- System.out
- .println("Geben Sie die Laufzeit ein: ");
- }
- } while (laufzeit > 3600 || laufzeit < 1);
- }
- } catch (IOException e) {
- e.printStackTrace();
- } catch (StringIndexOutOfBoundsException e) {
- System.out.println("Sie muessen etwas eingeben.");
- }
- }
- }
- return laufzeit;
- }
- /**
- * Die Methode "tilgungsRateEinlesen" dient zum Einlesen einer Tilgungsrate.
- * Die IOExeption und NumberFormatException werden abgefangen. Bei einer
- * Fehlermeldung wird die Methode nochmals ausgef�hrt.
- *
- * @return tilgungsrate
- */
- public double monatlicheRateEinlesen() {
- double zahl = 0;
- do {
- System.out.print("Geben Sie die Tilgungsrate: ");
- zahl = leseDoubleZahlEin();
- if (zahl <= 0) {
- System.out
- .print("Die Rate muss mindestens einen Euro betragen.");
- }
- } while (zahl <= 0);
- return zahl;
- }
- /**
- * Die "anfangsMonatEinlesen" liest einen Anfangsmonat ein und gibt ihn
- * zurueck. Die IOExeption und NumberFormatException werden abgefangen. Bei
- * einer Fehlermeldung wird die Methode nochmals ausgef�hrt. Der eingelesene
- * Monat muss groesser sein als 0 und kleiner als 13.
- *
- * @return anfangsmonat
- */
- public int anfangsMonatEinlesen() {
- do {
- System.out.print("Geben Sie einen Anfangsmonat ein: ");
- this.anfangsmonat = leseIntZahlEin();
- if (this.anfangsmonat > 12 || this.anfangsmonat < 1) {
- System.out
- .print("Geben Sie einen Monat zwischen 1 und 12 ein: ");
- }
- } while (this.anfangsmonat > 12 || this.anfangsmonat < 1);
- return this.anfangsmonat;
- }
- /**
- * Die Methode " tilgungsPlanAusgeben" gibt den Tilgungsplan f�r gesamten
- * Zeitraum aus. Der Tilgungsplan enth�lt den Zahlmonat, die Rate, die
- * Zinsen, die Tilgung und den Rest. Durch "printf" und den entsprechenden
- * Paramtern, wird die Ausgabe wie gewuenscht formatiert.
- *
- * @param tilgungsplan
- */
- public void tilgungsPlanAusgeben(String tilgungsplan) {
- String[] splitArray = tilgungsplan.split(";");
- for (int i = 0; i < splitArray.length; i++) {
- System.out.printf("%-25s", splitArray[i]);
- if ((i + 1) % 5 == 0)
- System.out.println("");
- }
- }
- /**
- * Die Methode ''generiereKreditNichtGueltigNachricht()'' dient Ausgeben
- * einer Fehlermeldung, falls die Rate geringer ist, als die Zinsen.
- *
- * @return
- */
- public String generiereKreditNichtGueltigNachricht() {
- return "Der Kredit ist nicht gueltig, da die Zinsen groesser sind als die Rate!";
- }
- /**
- * Die Methode "meldungAusgeben()" dient Ausgeben einer Meldung.
- *
- * @param meldung
- */
- public void meldungAusgeben(String meldung) {
- System.out.println(meldung);
- }
- /**
- * Die Methode ''generiereAbschlagSummenZahlungsforderung()'' dient Ausgeben
- * der Abschlagssumme.
- *
- * @param betrag
- * @return
- */
- public String generiereAbschlagSummenZahlungsforderung(String betrag) {
- return "Die restliche Summe muss mit einer Abschlagsumme in Hoehe von "
- + betrag + " beglichen werden!;;;;;";
- }
- /**
- * Die Methode ''generiereTabellenkopf()'' dient zur Generierung des
- * Tabellenkopfes mit den Werten
- * "Zahlmonat, Rate, Zinsen, Tilgung und dem Rest".
- *
- * @return
- */
- public String generiereTabellenkopf() {
- return "Zahlmonat;Rate;Zinsen;Tilgung;Rest;";
- }
- /**
- * Die Methode ''generiereJahresAbrechnungZeile()'' dient Ausgeben der
- * Jahresabrechnung.
- *
- * @param jahresSummeRaten
- * @param jahresSummeZinsen
- * @param jahresSummeTilgung
- * @return
- */
- public String generiereJahresAbrechnungZeile(String jahresSummeRaten,
- String jahresSummeZinsen, String jahresSummeTilgung) {
- return "Summen" + ";" + jahresSummeRaten + ";" + jahresSummeZinsen
- + ";" + jahresSummeTilgung + ";" + "p.a" + "\n;";
- }
- /**
- * Die Methode "generiereLaufZeitZuLangZeile()" dient Ausgeben einer
- * Fehlermeldung, falls die Laufzeit zu lang ist.
- *
- * @param eingegebeneLaufzeit
- * @param echteLaufzeit
- * @return
- */
- public String generiereLaufZeitZuLangZeile(int eingegebeneLaufzeit,
- int echteLaufzeit) {
- if (eingegebeneLaufzeit > echteLaufzeit) {
- return "Die Laufzeit war zu lang! Sie wurde von "
- + eingegebeneLaufzeit + " auf " + echteLaufzeit
- + " Monate gekuerzt!;;;;;";
- }
- return "";
- }
- /**
- * Die Methode "monatJahrEinlesenKeineVergangenheit()" liest einen
- * Anfangsmonat ein. Wenn der Anfangsmonat kleiner oder gleich dem aktuellen
- * Monat ist, wird die Methode so lange wiederholt bis das aktuelle Jahr
- * größer als das eingegebene Jahr ist.
- */
- public void monatJahrEinlesenKeineVergangenheit() {
- System.out.println(this.aktuellerMonat);
- boolean fehler = true;
- anfangsMonatEinlesen();
- if (this.anfangsmonat <= aktuellerMonat) {
- do {
- this.anfangsjahr = anfangsJahrKeineVergangenheitEinlesen();
- } while (this.anfangsjahr < aktuellesJahr);
- }
- if (this.anfangsmonat > aktuellerMonat) {
- this.anfangsjahr = anfangsJahrKeineVergangenheitEinlesen();
- }
- }
- /**
- * Die Methode "anfangsJahrEinlesen()" liest einen Jahr ein. Die IOExeption
- * und NumberFormatException werden abgefangen. Bei einer Fehlermeldung wird
- * die Methode nochmals ausgefuehrt.
- */
- private void anfangsJahrEinlesen()
- {
- System.out.println("Geben Sie ein Anfangsjahr ein: ");
- boolean fehler = true;
- while (fehler == true) {
- try {
- this.anfangsjahr = Integer.parseInt(br.readLine());
- fehler = false;
- } catch (NumberFormatException e) {
- System.out
- .print("Die Eingabe war keine Zahl! Bitte erneut eingeben:");
- } catch (IOException e) {
- System.out.print("Einlesen fehlgeschlagen!");
- }
- }
- }
- /**
- * Die Methode ''anfangsJahrKeineVergangenheitEinlesen()'' liest ein
- * Anfangsjahr ein. Die Methode wird solange wiederholt bis das Anfangsjahr
- * größer als das aktuelle Jahr ist.
- *
- * @return
- * @throws IOException
- */
- private int anfangsJahrKeineVergangenheitEinlesen() {
- anfangsJahrEinlesen();
- if (this.anfangsjahr < this.aktuellesJahr) {
- System.out.println("Das Anfangsdatum liegt in der Vergangenheit!");
- anfangsJahrKeineVergangenheitEinlesen();
- }
- if (this.anfangsjahr == this.aktuellesJahr
- && this.anfangsmonat == this.aktuellerMonat) {
- System.out
- .println("Der Vetrag kann für diesen Monat nicht mehr abgeschlossen werden!");
- anfangsJahrKeineVergangenheitEinlesen();
- }
- if (this.anfangsjahr == this.aktuellesJahr
- && this.anfangsmonat < this.aktuellerMonat) {
- System.out.println("Der Anfangsmonat liegt in der Vergangenheit!");
- anfangsJahrKeineVergangenheitEinlesen();
- }
- return anfangsjahr;
- }
- /**
- * Die Methode ''getMonat()'' gibt den anfangsmonat zurueck.
- * @return
- */
- public int getMonat() {
- return anfangsmonat;
- }
- /**
- * Die Methode ''getJahr()'' gibt das anfangsjahr zurueck.
- * @return
- */
- public int getJahr() {
- return anfangsjahr;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement