Java-Ausgabe rechtsbündig machen?
Hallo,
ist es möglich die Ausgabe rechtsbündig zu machen (siehe Screenshot) Code:
import java.text.DecimalFormat;
public class Aufgabe1 {
public static void main(String[] args) {
DecimalFormat myFormat = new DecimalFormat("##,000.00");
final double zinsenProzent = 0.04;
final double lottogewinn = 90000;
final double rateMonat = 1000;
final double rateJahr = rateMonat * 12;
double zinsenEUR = 0;
double zinsenMonat = 0;
double lottogewinnReduziert = lottogewinn;
double aktuellesVermoegen = lottogewinn;
int monatsZaehler = 0;
int jahresZaehler = 0;
double zinsenNormal = zinsenProzent * 100;
System.out.println("Auszahlungsplan fuer Anlagekapital " + myFormat.format(lottogewinn)
+ " EUR und Zinssatz von " + zinsenNormal + "%");
System.out.println("Monatlicher Entnahmebetrag: " + myFormat.format(rateMonat) + " EUR \n");
System.out.println("Jahr \t \t Rate pro Jahr \t Zins pro Jahr \t Aktuelles Vermoegen");
while (aktuellesVermoegen > 0 && jahresZaehler < 100) {
monatsZaehler = monatsZaehler + 1;
if (monatsZaehler <= 12) {
zinsenEUR = lottogewinnReduziert * zinsenProzent / 12;
zinsenMonat = zinsenEUR + zinsenMonat;
lottogewinnReduziert = lottogewinnReduziert - rateMonat;
aktuellesVermoegen = lottogewinnReduziert + zinsenMonat;
}
if (monatsZaehler == 12) {
monatsZaehler = 0;
jahresZaehler = jahresZaehler + 1;
lottogewinnReduziert = aktuellesVermoegen;
System.out.println(+jahresZaehler + ". Jahr \t " + myFormat.format(rateJahr) + " \t "
+ myFormat.format(zinsenMonat) + " \t " + myFormat.format(aktuellesVermoegen) + "");
zinsenMonat = 0;
}
}
System.out.println("Kapitalverzehr nach " + jahresZaehler + " Jahren " + monatsZaehler + " Monat(en)");
}}
Geht wohl irgendwie mit %F oder so...kriege das aber nicht hin. Bitte um Hilfe. LG

4 Antworten
da scheint es nicht viel leute bei GF zu geben, die richtig java können, ich auch nicht. aber:
dein problem ist, dass du mit \t = tabulator versuchst zu tabellieren (ist ja naheliegend). aber ein tabsprung richtet sich im 8-er raster aus. im jahr 8 ist der betrag so klein, dass die vorherige 8-er spalte genommen wird.
nicht gut. soweit ich gesehen habe, funktion system.out.printf (fast?) genauso wie printf in C.
wie schon bemerkt, hast du ja die rechtsausrichtung schon mit der myform bewerkstelligt, es gibt dir einen string mit fester länge von 9 zurück.
die laufende ausgabe machst du also mit:
System.out.printf("%d. Jahr %9s %9s %9s\n",
jahresZaehler,
myFormat.format(rateJahr),
myFormat.format(zinsenMonat),
myFormat.format(aktuellesVermoegen);
die anzahl blanks vor und hinter den %9s sind hier willkürlich, dies und die überschrift musst du noch anpassen.
nun, die 9 ist die länge deines format-strings
"##,000.00"
die %-sequenzen, werden stück für stück durch den jeweiligen nächsten parameter von printf ersetzt. und die %-seqs müssen zum typ des parameters passen: %d (=decimal ) ganzzahl numerisch, %s = string, %20s = string linksbündig mit fester länge, %f (=float) gleitkomma, etc. - unsauber, aber praktisch.
ansonsten die beschreibung von printf nachschlagen, googeln.
Auf Groß-/Kleinschreibung achten %f,
Aber du verwendest doch schon die Formatter-Klasse, da sollte doch eine Parameter "rechtsbündig" sein: "#1.00" (so ähnlich, mit 2 Nachkommastellen)
Gegooglet habe ich ja schon...aber es klappt bei mir nicht.
Das ich irgendwas mit %5d oder %6f machen muss weiss ich mittlerweile..aber wenn ich das mache kommt immer das:

Findest Du z.B. hier
http://stackoverflow.com/questions/12806278/double-decimal-formatting-in-java
wow, das funktioniert.
Könntest Du mir jetzt mal genau erklären was genau ich da gemacht habe? was ist 9 (wahrscheinlich irgendne Stellenanzahl) und was ist s..(vllt string?!)
Danke!