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;
- /**
- * Die Klasse ''EinAusgabe'' dient für die Bewerkstelligung der Ein- und
- * Ausgabe. Die Methoden lesen etwas ein und geben das Eingelesene über return
- * zurück. Falls ein Fehler auftritt, wird die dementsprechende Fehlermeldung
- * ausgegeben.
- *
- * @author Tobias Stelter, Kai Nortmann
- *
- */
- public class EinAusgabe {
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- /**
- * Die Methode "leseDoubleZahlEin()" dient zum Einlesen einer Double-Zahl.
- * Die Methode versucht einen String einzulesen und umzuwandeln. Falls ein
- * Fehler beim Einlesen oder bei der Umwandlung geschieht, wird er durch die
- * Exception ''IOExeption'' oder ''NumberFormatException'' behandelt und die
- * dementsprechende Fehlermeldung ausgegeben.
- *
- * @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
- * Methode versucht einen String einzulesen und umzuwandeln. Falls ein
- * Fehler beim Einlesen oder bei der Umwandlung geschieht, wird er durch die
- * Exception ''IOExeption'' oder ''NumberFormatException'' behandelt und die
- * dementsprechende Fehlermeldung ausgegeben.
- *
- * @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 der Kredithöhe.
- * Die Kredithöhe wird über die Methode ''leseDoubleZahlEin()'' eingelesen.
- * KreditBetragEinlesen() prüft zudem, ob die Kredithöhe größer als 0 ist.
- * Andernfalls wird dazu aufgefordert die Eingabe nochmals zu Tätigen.
- *
- * @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" dient zum Einlesen eines Zinssatzes. Der
- * Zinssatz wird über die Methode ''leseDoubleZahlEin()'' eingelesen.
- * zinssatzEinlesen() prüft zudem, ob der Zinssatz größer als 0 ist.
- * Andernfalls wird dazu aufgefordert die Eingabe nochmals zu Tätigen.
- *
- * @return zinssatz
- */
- public double zinssatzEinlesen() {
- double zahl = 0.0;
- do {
- System.out.print("Geben Sie den Zinssatz in % ein: ");
- zahl = leseDoubleZahlEin();
- if (zahl <= 0) {
- System.out.print("Der Zinssatz muss groesser als 0 sein.");
- }
- } while (zahl <= 0);
- return zahl;
- }
- /**
- * Die Methode "laufzeitEinlesen()" dient zur Abfrage, ob eine
- * Vertragslaufzeit festgelegt werden soll. Hierfür wird ein String
- * eingelesen und das erste Zeichen in einer Char-Variable gespeichert.
- * Falls die Eingabe nicht die Buchstaben 'j' oder 'n' enthält, wird sie
- * nochmals ausgeführt. Wenn der Benutzer sich für einen Kredit mit vorherig
- * festgelegter Laufzeit entschieden hat, wird die Methode
- * ''laufzeitEinlesenMonate()'' aufgerufen. Eine leere Eingabe oder ein
- * Fehler beim Einlesen werden durch die Exceptions
- * ''StringIndexOutOfBoundsException'' und ''IOException'' behandelt.
- *
- * @return
- *
- * @return laufzeit
- */
- public int laufzeitEinlesen() {
- 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') {
- return laufzeitEinlesenMonate();
- }
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (StringIndexOutOfBoundsException e) {
- System.out.println("Sie muessen etwas eingeben.");
- System.out.print("Geben Sie 'j' oder 'n' ein.");
- }
- }
- }
- return 0;
- }
- /**
- * Die Methode "laufzeitEinlesenMonate" dient zum Einlesen einer
- * Vetragslaufzeit. Die Laufzeit wird über die Methode ''leseIntZahlEin()''
- * eingelesen. laufzeitEinlesenMonate() prüft zudem, ob der Zinssatz größer
- * als 0 und kleiner 3600 Monate (30 Jahre) ist. Andernfalls wird dazu
- * aufgefordert die Eingabe nochmals zu Tätigen.
- *
- * @return
- */
- private int laufzeitEinlesenMonate() {
- int laufzeit = 0;
- System.out
- .print("Auf welchen Zeitraum soll die Laufzeit festgesetzt werden?"
- + "\n" + "Geben 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);
- return laufzeit;
- }
- /**
- * Die Methode "monatlicheRateEinlesen()" dient zum Einlesen einer
- * monatlichen Rate. Die Rate wird über die Methode ''leseDoubleZahlEin()''
- * eingelesen. monatlicheRateEinlesen() prüft zudem, ob die Rate größer als
- * 0 ist. Andernfalls wird dazu aufgefordert die Eingabe nochmals zu
- * Tätigen.
- *
- * @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" dient zum Einlesen eines Monates. Der Monat
- * wird über die Methode ''leseIntZahlEin()'' eingelesen.
- * monatlicheRateEinlesen() prüft zudem, ob der Monat größer als 0 und
- * kleiner als 13 ist. Andernfalls wird dazu aufgefordert die Eingabe
- * nochmals zu Tätigen.
- *
- * @return anfangsmonat
- */
- public int anfangsMonatEinlesen() {
- int anfangsmonat = 0;
- do {
- System.out.print("Geben Sie einen Anfangsmonat ein: ");
- anfangsmonat = leseIntZahlEin();
- if (anfangsmonat > 12 || anfangsmonat < 1) {
- System.out
- .print("Geben Sie einen Monat zwischen 1 und 12 ein: ");
- }
- } while (anfangsmonat > 12 || anfangsmonat < 1);
- return anfangsmonat;
- }
- /**
- * Die Methode "anfangsJahrEinlesen" dient zum Einlesen eines Jahres. Das
- * Jahr wird über die Methode ''leseIntZahlEin()'' eingelesen.
- *
- * @return anfangsjahr
- */
- public int anfangsJahrEinlesen() {
- System.out.print("Geben Sie einen Anfangsjahr ein: ");
- return leseIntZahlEin();
- }
- /**
- * 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 gewünscht formatiert.
- *
- * @param tilgungsplan
- */
- public void tilgungsPlanAusgeben(String tilgungsplan) {
- String[] splitArray = tilgungsplan.split(";");
- for (int i = 0; i < splitArray.length - 5; i += 5) {
- System.out.printf("%-15s%-15s%-15s%-15s%-30s", splitArray[i],
- splitArray[i + 1], splitArray[i + 2], splitArray[i + 3],
- splitArray[i + 4]);
- System.out.println("");
- }
- }
- /**
- * Datumspruefung: Die auskommentierten Methoden dienen für eine Eingabe
- * eines Datums, das nicht in der Vergangenheit liegen darf. Hierfür wird
- * das Systemdatum ermittelt und mit dem eingegebenen Datum verglichen.
- * Diese Methoden sind nicht Bestanteil des Programms, könnten allerdings zu
- * einem späteren Zeitpunkt implementiert werden.
- */
- // import java.util.Calendar;
- // import java.util.GregorianCalendar;
- // private int anfangsmonat = 0; // Für eine Implemenation mit
- // Datumspruefung
- // private int anfangsjahr = 0; // Für eine Implemenation mit Datumspruefung
- // public void monatJahrEinlesenKeineVergangenheit() throws IOException {
- // Calendar cal = new GregorianCalendar();
- // int aktuellesJahr = cal.get(Calendar.YEAR);
- // int aktuellerMonat = cal.get(Calendar.MONTH);
- //
- // anfangsMonatEinlesen();
- // if (this.anfangsmonat < aktuellerMonat) {
- // do {
- // anfangsJahrKeineVergangenheitEinlesen();
- //
- // } while (this.anfangsjahr <= aktuellesJahr);
- // }
- // if (this.anfangsmonat >= aktuellerMonat) {
- // anfangsJahrKeineVergangenheitEinlesen();
- // }
- // }
- // public int anfangsMonatEinlesen() throws IOException {
- //
- // do {
- // System.out.print("Geben Sie einen Anfangsmonat ein: ");
- // this.anfangsmonat = Integer.parseInt(br.readLine());
- // } while (this.anfangsmonat > 12);
- // return anfangsjahr;
- // }
- // public int anfangsJahrKeineVergangenheitEinlesen() throws IOException {
- // Calendar cal = new GregorianCalendar();
- // int aktuellesJahr = cal.get(Calendar.YEAR);
- //
- // do {
- // System.out.println("Geben Sie einen Anfangsjahr ein: ");
- // this.anfangsjahr = Integer.parseInt(br.readLine());
- // if (this.anfangsjahr < aktuellesJahr) {
- // System.out
- // .println("Das Anfangsjahr liegt in der Vergangenheit!");
- // }
- // } while (this.anfangsjahr < aktuellesJahr);
- // return aktuellesJahr;
- //
- // }
- // public int getMonat()
- // {
- // return anfangsmonat;
- // }
- // public int getJahr()
- // {
- // return anfangsjahr;
- // }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement