# String formatiert ausgeben ( gleiche Anzahl von Ziffern )



## VipViper2000 (4. Aug 2006)

Hi Leute!

Ich hab ein kleines Problem und zwar hab ich verschiedene Zahlen die im Bereich 1 <= x <=9999 liegen. Ich will die Zahlen letztendlich auf nem Drucker ausgeben lassen und dazu sollen die in folgender Form formatiert sein:


```
...1
..20
.300
9999
```

Also es geht mir halt um die richtige Einrückung ( Die Punkte müsst ihr euch wegdenken ). In C geht das ja einfach mit dem Längenangaben aber wie geht das in Java? Also ich bräuchte sowas wie "gebe IMMER 4 Zeichen aus". Gibts Bordmittel oder muss ich das selbermachen?

Danke euch,
VipViper2000

EDIT: Habe jetzt herausgefunden, dass man mit DecimalFormat eine Anstellung von 0en erreichen kann. Aber gehts auch mit Leerzeichen?


----------



## Leroy42 (4. Aug 2006)

Ab Java 1.5 hast du (fast) die volle Mächtigkeit des C-Formattings:


```
System.out.printf("%10d", 42);
```

und wenn du als Formatstring "%,10d" nimmst wird die Zahl auch gleich
mit Tausendertrennzeichen ausgegeben.

Falls du erstmal nur den formatierten String brauchst:


```
String s = String.printf("%,10d", 42);
```


----------



## VipViper2000 (5. Aug 2006)

Moin! 

Danke für den Tip mit dem printf, aber die Funktion printf im String Objekt gibts nicht. Also weder Eclipse 3.2 mit Java 1.5 Update 7 noch die Online Docu berichten darüber.

Andere Vorschläge? Weil ein System.out bringt mir nichts weil ich ja in den Grafik Kontext des Druckers schreiben will und dafür brauch ich halt den String.


----------



## moormaster (5. Aug 2006)

VipViper2000 hat gesagt.:
			
		

> Moin!
> 
> Danke für den Tip mit dem printf, aber die Funktion printf im String Objekt gibts nicht. Also weder Eclipse 3.2 mit Java 1.5 Update 7 noch die Online Docu berichten darüber.
> 
> Andere Vorschläge? Weil ein System.out bringt mir nichts weil ich ja in den Grafik Kontext des Druckers schreiben will und dafür brauch ich halt den String.



wie wäre es damit:

http://java.sun.com/j2se/1.5.0/docs/api/java/io/PrintStream.html#printf(java.lang.String,%20java.lang.Object...)

Da System.out einen PrintStream liefert, kannst dus also direkt drauf anwenden:


```
System.out.printf(...);
```

So wie oben schon beschrieben.

Und wenn du den String an sich brauchst: 


```
ByteArrayOutputStream out = new ByteArrayOutputStream();
 new PrintWriter(out).printf(...);
 out.toString(); // liefert den String
```


----------



## Leroy42 (5. Aug 2006)

Doch String hat schon die Methode, sie heißt nur anders:   


```
String s = String.format("%,10d", 42);
```


----------



## VipViper2000 (6. Aug 2006)

Der Tip mit de format von String ist wirklich gut. Vielen Dank!


----------

