# Formtieren von Zahlen in 'alten' Java-Stil



## takidoso (1. März 2007)

Hallo und Halli,
ich habe das problem, dass ich zu geren rechtsbündig Zahlen ausgeben möchte. dies möchte ich mittels der java 1.4 Sachen wenn möglich tun.
Da gibt es diese netten NumberFormat- bzw. DecimalFormat-Klassen, womit man schon mal ganz nett formatieren kann, aber ich habe da noch nicht herausgefunden wie es mit diesen Klassen rechtsbündig geht, Kann mir da jemand weiterhelfen z.B. mit einem Beispiel oder einem Link, oder ist es mit diesen Klassen trotz Formatzeichen doch nicht ohne Stringbastelei möglich?

mit bestem Dank im Voraus

Takidoso


----------



## Thomas Darimont (1. März 2007)

Hallo,

wenn du das zufällig für ne JTable:
http://www.tutorials.de/forum/swing-awt-swt/179213-rechtsbuendig-schreiben-jtable.html
oder ne JList brauchst:
http://www.tutorials.de/forum/swing-awt-swt/201485-eintraege-jlist-rechtsbuendig-darstellen.html

Ansonsten würde ich das unter Java 1.4 entweder so machen:

```
/**
 * 
 */
package de.tutorials;

import java.text.DecimalFormat;

/**
 * @author thomas.darimont
 * 
 */
public class NumberFormatExample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        long a = -223897000;
        double b = Math.PI * 1000000000;
        double c = 0.021;

        System.out.println(DecimalFormatHelper.DEFAULT.alignRight(a, String
                .valueOf(a).length()));
        System.out.println(DecimalFormatHelper.DEFAULT.alignRight(b, String
                .valueOf(a).length()));
        System.out.println(DecimalFormatHelper.DEFAULT.alignRight(c, String
                .valueOf(a).length()));
    }

    static class DecimalFormatHelper {
        private final static String SPACES = "                                                                                                    ";

        DecimalFormat decimalFormat;

        final public static DecimalFormatHelper DEFAULT = new DecimalFormatHelper(
                new DecimalFormat("0.000"));

        private DecimalFormatHelper(DecimalFormat decimalFormat) {
            this.decimalFormat = decimalFormat;
        }

        public String alignRight(double number, int maximumIntegerDigits) {
            String string = decimalFormat.format(number);
            int spacesToAdd = maximumIntegerDigits - string.length()
                    + decimalFormat.getMaximumFractionDigits() + 1;
            return SPACES.substring(0, spacesToAdd) + string;
        }
    }
}
```

oder entsprechende StringUtils Methoden verwenden:
http://jakarta.apache.org/commons/lang/api-release/org/apache/commons/lang/StringUtils.html

Gruß Tom


----------

