Tabellarische Formatierung beziehungsweise Ausgabe

T

Tekumi

Gast
Hey Leute,

sitze momentan an einer Hausaufgabe. Das Ziel ist eine Zinsberechnung, was vorab erstmal ganz einfach klingt. Jetzt soll allerdings folgendes tabellarisch angegeben werden:

Jahre-------Altes Kapital--------------------Zinsen---------Neues Kapital
----1-----------7500,00--------------------487,50--------------7987,50
----2-----------7987,50--------------------819,19--------------8506,69
----3-----------8506,69--------------------552,93--------------9059,62
----4-----------9059,62--------------------588,88--------------9648,50
----5-----------9648,50--------------------627,15-------------10275,65
----6----------10275,65--------------------667,92-------------10943,57

Die Werte würde ich natürlich per Schleife ausgeben lassen. Mit "\t" zu arbeiten kommt nicht wirklich in Frage, da die Zahlen sich vor allem beim Alten und Neuen Kapital vergrößern und somit die Formatierung kaputt machen. Ich habe mich etwas über System.format und printf eingelesen, komme damit allerdings nicht wirklich gut zurecht.
Da ich die Zahlen mit dem Typ double verwende entstehen viele Nachkommastellen, hierfür habe ich mir allerdings schon Abhilfe geschaffen indem ich einfach ein Dezimalformat festlege das beliebig viele Stellen vor, allerdings maximal 2 nach dem Komma erlaubt.

Über einen kleinen Tip würde ich mich sehr freuen, eine komplette Lösung erwarte und wünsche ich nicht - da ist ja der Sinn einer solchen Hausaufgabe hinweg.

Viele Grüße

Ergänzung: Das ganze soll natürlich OHNE die Striche dazwischen dargestellt werden ^_^
 
P

pappawinni

Gast
Etwa so:

Java:
strOut = String.format( "|%5d|%20.2f|%20.2f|%20.2f|",jahre,altesKapital,Zinsen,neuesKapital);
 
T

Tekumi

Gast
Hey, danke schonmal für die Antwort. Mein Programm sieht - mit einer sehr ungenauen Formatierung die auch keine weitriechende Lösung darstellt - bisher so aus:

Java:
import java.util.Scanner;
import java.text.*;

public class Aufgabe_7
{
    public Aufgabe_7()
    {
        DecimalFormat f = new DecimalFormat("#0.00");
        double kapital, kapital_neu, zinsen, zinssatz, zeitraum;
        int jahreszaehler;
        jahreszaehler = 1;
        
        Scanner sc = new Scanner(System.in);
        System.out.println("Dieses Programm dient dazu, die Zinsen über x Jahre hinweg zu berechnen.");
        System.out.println("");
        System.out.println("Geben Sie bitte ein, über wie viele Jahre hinweg die Zinsen berechnet werden sollen:");
        zeitraum = sc.nextDouble();
        System.out.println("Geben Sie bitte ein, welches Kapital Sie anlegen wollen:");
        kapital = sc.nextDouble();
        System.out.println("Geben Sie bitte ein, zu welchem Zinssatz Sie Ihr Geld anlegen:");
        zinssatz = sc.nextDouble();
        sc.close();
       
        System.out.println("Jahr\t Altes Kapital\t\tZinsen\t Neues Kapital");
        
        while(jahreszaehler <= zeitraum)
        {
            zinsen = kapital * zinssatz / 100;
            kapital_neu = kapital + zinsen;
            
            if(kapital < 10000)
            {
                System.out.println(jahreszaehler + "\t\t" + f.format(kapital) + "\t\t" + f.format(zinsen) + "\t\t" + f.format(kapital_neu));
            }
            else if (kapital < 100000)
            {
                System.out.println(jahreszaehler + "\t\t" + f.format(kapital) + "\t" + f.format(zinsen) + "\t\t" + f.format(kapital_neu));
            }
            else
            {
                if (zinsen < 10000)
                {
                    System.out.println(jahreszaehler + "\t\t" + f.format(kapital) + "\t" + f.format(zinsen) + "\t\t" + f.format(kapital_neu));
                }
                else
                {
                    System.out.println(jahreszaehler + "\t\t" + f.format(kapital) + "\t" + f.format(zinsen) + "\t" + f.format(kapital_neu));
                }
            }
            jahreszaehler++;
            kapital = kapital_neu;
        }
    }
}

Das heißt also ich müsste den Teil

Java:
if(kapital < 10000)
            {
                System.out.println(jahreszaehler + "\t\t" + f.format(kapital) + "\t\t" + f.format(zinsen) + "\t\t" + f.format(kapital_neu));
            }
            else if (kapital < 100000)
            {
                System.out.println(jahreszaehler + "\t\t" + f.format(kapital) + "\t" + f.format(zinsen) + "\t\t" + f.format(kapital_neu));
            }
            else
            {
                if (zinsen < 10000)
                {
                    System.out.println(jahreszaehler + "\t\t" + f.format(kapital) + "\t" + f.format(zinsen) + "\t\t" + f.format(kapital_neu));
                }
                else
                {
                    System.out.println(jahreszaehler + "\t\t" + f.format(kapital) + "\t" + f.format(zinsen) + "\t" + f.format(kapital_neu));
                }
            }

ersetzen mit

Java:
strOut = String.format( "|%5d|%20.2f|%20.2f|%20.2f|",jahreszaehler,kapital,zinsen,kapital_neu);

richtig?

Wenn ich das mache wird mir allerdings nur

Code:
Dieses Programm dient dazu, die Zinsen über x Jahre hinweg zu berechnen.

Geben Sie bitte ein, über wie viele Jahre hinweg die Zinsen berechnet werden sollen:
6
Geben Sie bitte ein, welches Kapital Sie anlegen wollen:
7500
Geben Sie bitte ein, zu welchem Zinssatz Sie Ihr Geld anlegen:
6,5
Jahr	 Altes Kapital		Zinsen	 Neues Kapital

ausgegeben, was hab ich da wohl angestellt?

lg
 
P

pappawinni

Gast
strOut wäre doch nur ein formatierter String.

Den musst du dann natürlich auch ausgeben. Z.B.:
Code:
System.out.println(strOut);

oder so:

Java:
        System.out.println(String.format("|%5s|%20s|%20s|%20s|","Jahre","Altes Kapital","Zinsen","Neues Kapital"));
        
        while(jahreszaehler <= zeitraum)
        {
            zinsen = kapital * zinssatz / 100;
            kapital_neu = kapital + zinsen;
            System.out.println(String.format( "|%5d|%20.2f|%20.2f|%20.2f|",jahreszaehler,kapital,zinsen,kapital_neu));        
            jahreszaehler++;
            kapital = kapital_neu;
        }
 
Zuletzt bearbeitet von einem Moderator:
T

Tekumi

Gast
Okay, du hast Recht, das war etwas dumm von mir...

mit
Java:
import java.util.Scanner;
import java.text.*;

public class Aufgabe_7_alt
{
    public Aufgabe_7_alt()
    {
        double kapital, kapital_neu, zinsen, zinssatz, zeitraum;
        int jahreszaehler;
        String strOut;
        
        jahreszaehler = 1;
                       
        Scanner sc = new Scanner(System.in);
        System.out.println("Dieses Programm dient dazu, die Zinsen über x Jahre hinweg zu berechnen.");
        System.out.println("");
        System.out.println("Geben Sie bitte ein, über wie viele Jahre hinweg die Zinsen berechnet werden sollen:");
        zeitraum = sc.nextDouble();
        System.out.println("Geben Sie bitte ein, welches Kapital Sie anlegen wollen:");
        kapital = sc.nextDouble();
        System.out.println("Geben Sie bitte ein, zu welchem Zinssatz Sie Ihr Geld anlegen:");
        zinssatz = sc.nextDouble();
        sc.close();
        
        System.out.println("Jahr\t Altes Kapital\t\tZinsen\t Neues Kapital");
        
        while(jahreszaehler <= zeitraum)
        {
            zinsen = kapital * zinssatz / 100;
            kapital_neu = kapital + zinsen;
            
            strOut = String.format( "%4d%18.2f%16.2f%16.2f",jahreszaehler,kapital,zinsen,kapital_neu);
            System.out.println(strOut);
            
            jahreszaehler++;
            kapital = kapital_neu;
        }
    }
}

funktioniert das Programm nun Reibungslos, vielen Dank für deine schnelle Hilfe!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P tabellarische Ausgabe Java Basics - Anfänger-Themen 3
J tabellarische Ausgabe mit Escape-Sequenzen ! Java Basics - Anfänger-Themen 3
M Code-Formatierung Java Basics - Anfänger-Themen 2
J Spezielle Ausgabe Formatierung Java Basics - Anfänger-Themen 4
P Problem mit richtiger Formatierung :( Java Basics - Anfänger-Themen 1
T Formatierung von Zahlen (Tausendertrennzeichen) Java Basics - Anfänger-Themen 2
T Problem mit double-Formatierung Java Basics - Anfänger-Themen 3
U kompilieren geht nicht wg. Formatierung wahrscheinlich Java Basics - Anfänger-Themen 7
B JLabel Text Formatierung Java Basics - Anfänger-Themen 5
O Text Formatierung Java Basics - Anfänger-Themen 13
I Input/Output System.out.println formatierung? möglich? Java Basics - Anfänger-Themen 2
H html-Text mit Formatierung in String speichern Java Basics - Anfänger-Themen 4
E Formatierung der Ausgabe Java Basics - Anfänger-Themen 6
D Time Formatierung - Falsches Resultat Java Basics - Anfänger-Themen 4
T JPanel formatierung Java Basics - Anfänger-Themen 3
B Random Zahlen und Formatierung Java Basics - Anfänger-Themen 6
A Frage bei der Formatierung von SimpleDateFormat Java Basics - Anfänger-Themen 7
F XML-Formatierung Java Basics - Anfänger-Themen 4
A Formatierung Java Basics - Anfänger-Themen 3
G JTable formatierung von zahlen Java Basics - Anfänger-Themen 2
A Formatierung Java Basics - Anfänger-Themen 4
S .txt ausgabe / Formatierung Java Basics - Anfänger-Themen 2
N formatierung aus printf in string verwenden Java Basics - Anfänger-Themen 3
J jadfq - Formatierung von Doubles Java Basics - Anfänger-Themen 8
D Formatierung: ganzzahlige Float Werte nach Int Java Basics - Anfänger-Themen 2
A formatierung Java Basics - Anfänger-Themen 9
B Formatierung beim Drucken Java Basics - Anfänger-Themen 4
vogella String von Formatierung befreien Java Basics - Anfänger-Themen 15
U Übername der texfield formatierung Java Basics - Anfänger-Themen 3
S HTML mit CSS-Formatierung aus Java erzeugen Java Basics - Anfänger-Themen 5
D Suche ActionListener und Formatierung für Textfelder Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben