2010-05-18 6 views
8

Ich habe folgende Zahlen: 1, 2, 3, 4, 10Format String werden xxx1, xx10 oder 1 ###, 10 ## etc

Aber ich diese Zahlen wie folgt drucken möchten:

0001 
0002 
0003 
0004 
0010 

Ich habe in Google gesucht. Das Schlüsselwort ist das Zahlenformat. Aber ich habe nichts, ich bekomme nur, Format dezimal wie Esel 1,000,000.00. Ich hoffe, Sie können mir eine Referenz vorschlagen oder mir etwas geben, um dieses Problem zu lösen.

Dank

bearbeiten, wir Number oder String.format ("% 4d", somevalue) verwenden können; aber es nur für 0 Zeichen vor Integer hinzufügen. Wie wenn ich Zeichen wie x, # oder vielleicht whitespace verwenden möchte. So ist der Charakter geworden: xxxx1 xxx10 oder ####1###10 oder 1####10###

+0

@Martijn Courteaux: Wenn Sie denken, diese Frage ein Duplikat ist (und ich würde mich sehr wundern, wenn es nicht so wäre), so sagt in einem Kommentar, und wir können abstimmen um diesen zu schließen. Das "Deja-Vu" -Tag war niedlich, aber so machen wir es hier nicht. –

Antwort

12
NumberFormat nf = new DecimalFormat("0000"); 
System.out.println(nf.format(10)); 

Diese Drucke "0010".

7

Werfen Sie einen Blick auf this

Was wollen Sie „Pad“ Ihr Ergebnis zu tun.
z.B. String.format("%04d", myValue);

4

können Sie String.format();

public static String addLeadingZeroes(int size, int value) 
{ 
    return String.format("%0"+size+"d", value); 
} 

So in Ihrer Situation verwenden:

System.out.println(addLeadingZeroes(4, 75)); 

druckt

0075 
+0

Ich denke, es würde natürlicher lesen: '" ... Nullen (int Nullen, int-Wert) "' verwendet werden wie: 'addLeadingZeroes (4, 75)' – OscarRyz

+0

@Oscar: Ich glaube nicht. Weil Sie '4' für Größe und' 75' für Wert übergeben können. Dann haben Sie nur zwei Nullen und nicht vier. –

+0

Vielleicht, aber das Lesen 'addLeadingZeroes (75, 4)' gibt mir den Eindruck, dass vor der Zahl 74 74 Nullen stehen würden: -/Mangst Antwort macht Sinn :) – OscarRyz

0

Für eine verkehrte Antwort.

int i = 10; 
System.out.println((50000 + i + "").substring(1)); 

druckt

0010