// import der notwendigen Bibliotheken
import java.io.*;
import java.text.*;
class Schuldentilgung
{
// Festlegung globaler Variablen ( static = nicht an ein Objekt gebunden )
static double kreditbetrag = 10000, zinssatz = 5, annuitaet = 1200, zinsen,
restschuld, zinssumme = 0, abtrag, rueckzahlsumme;
// Programmeinstiegspunkt, lediglich Aufruf der Menue-Methode
public static void main(String[] args) throws IOException
{
Menue();
}
// Methode um den fehlenden Befehl zur Löschung des Inhalts der Konsole zu
// kompensieren. Es werden 25 Leerzeilen ausgegeben, so dass die Konsole
// "leer" wirkt
public static void Leerzeilen()
{
for (int i = 1; i <= 25; i++)
{
System.out.println();
}
}
// Die Ueberschrift des Programmes
public static void Ueberschrift()
{
System.out.println("Programm zur Berechnung der Tilgung einer Schuld");
System.out.println("************************************************\n");
}
// Info mit den aktuellen Werten der Variablen
public static void Info()
{
System.out.println("\tKreditbetrag in EUR = " + kreditbetrag);
System.out.println("\tZinssatz in % = " + zinssatz);
System.out.println("\tAnnuitaet in EUR = " + annuitaet);
}
public static void Menue() throws IOException
{
int menueWahl;
String inData;
BufferedReader userIn =
new BufferedReader(new InputStreamReader(System.in));
do
{
Leerzeilen();
Ueberschrift();
Info();
System.out.println("\n[1] Eingabe");
System.out.println("[2] Ausgabe");
System.out.println("[0] Programm beenden");
System.out.print("\nIhre Wahl: ");
inData = userIn.readLine();
menueWahl = Integer.parseInt(inData);
switch (menueWahl)
{
case 1 : Eingabe(); break;
case 2 : Ausgabe(); break;
case 0 : System.exit(0);
}
} while (menueWahl != 0);
}
public static void Eingabe() throws IOException
{
Leerzeilen();
Ueberschrift();
String inData;
BufferedReader userIn =
new BufferedReader(new InputStreamReader(System.in));
System.out.print("Kreditbetrag in EUR: ");
inData = userIn.readLine();
kreditbetrag = Double.parseDouble(inData);
System.out.print("Zinssatz in %: ");
inData = userIn.readLine();
zinssatz = Double.parseDouble(inData);
zinsen = kreditbetrag * zinssatz / 100;
System.out.println("Zinsen im 1. Jahr: " + zinsen);
System.out.print("Annuitaet: ");
inData = userIn.readLine();
annuitaet = Double.parseDouble(inData);
}
public static void Ausgabe() throws IOException
{
Leerzeilen();
String jahrSTR, annuitaetSTR, zinsenSTR, zinssummeSTR, abtragSTR, restschuldSTR;
NumberFormat n = NumberFormat.getInstance();
n.setMaximumFractionDigits(2);
BufferedReader userIn =
new BufferedReader(new InputStreamReader(System.in));
String inData;
rueckzahlsumme = 0;
double annuitaetTemp = annuitaet;
restschuld = kreditbetrag;
int i = 0;
System.out.println("| Jahr | Annuitaet | Zinsen | Zinssumme | Abtrag | Restschuld |");
System.out.println("-----------------------------------------------------------------------");
while (restschuld > 0)
{
// Berechnung
zinssumme = 0;
zinsen = restschuld * zinssatz / 100;
zinssumme += zinsen;
if (restschuld < annuitaetTemp - zinsen)
annuitaetTemp = restschuld + zinsen;
abtrag = annuitaetTemp - zinsen;
restschuld = restschuld - abtrag;
i++;
rueckzahlsumme = rueckzahlsumme + zinsen + abtrag;
// Ausgabe
System.out.print("| ");
jahrSTR = String.valueOf(i);
String jahrOut = Out(4, jahrSTR);
System.out.print(jahrOut);
System.out.print(" | ");
annuitaetSTR = String.valueOf(n.format(annuitaetTemp));
String annuOut = Out(11, annuitaetSTR);
System.out.print(annuOut);
System.out.print(" | ");
zinsenSTR = String.valueOf(n.format(zinsen));
String zinsenOut = Out(8, zinsenSTR);
System.out.print(zinsenOut);
System.out.print(" | ");
zinssummeSTR = String.valueOf(n.format(zinssumme));
String zinssumOut = Out(10, zinssummeSTR);
System.out.print(zinssumOut);
System.out.print(" | ");
abtragSTR = String.valueOf(n.format(abtrag));
String abtragOut = Out(9, abtragSTR);
System.out.print(abtragOut);
System.out.print(" | ");
restschuldSTR = String.valueOf(n.format(restschuld));
String restOut = Out(10, restschuldSTR);
System.out.print(restOut);
System.out.print(" |");
System.out.println();
}
System.out.print("\nBeliebige Taste druecken um zum Menue zu gelangen");
inData = userIn.readLine();
}
static String Out(int width, Object obj)
{
String str = obj.toString();
StringBuffer buf = new StringBuffer ();
for(int i = 0; i < width - str.length(); i++)
{
buf.append(' ');
}
buf.append(str);
return buf.toString();
}
}