So formatieren Sie eine Zahl 0..9, um sie mit 2 Ziffern anzuzeigen (es ist KEIN Datum)

215

Ich möchte immer eine Zahl unter 100 mit 2 Ziffern anzeigen (Beispiel: 03, 05, 15 ...)

Wie kann ich die 0 anhängen, ohne eine Bedingung zu verwenden, um zu überprüfen, ob sie unter 10 liegt?

Ich muss das Ergebnis an einen anderen String anhängen, damit ich printf nicht verwenden kann.

Realtebo
quelle

Antworten:

528

Sie können verwenden:

String.format("%02d", myNumber)

Siehe auch die Javadocs

beny23
quelle
1
Was ist, wenn myNumber ein Double ist?
Fra
3
@Fra, dann würden Sie verwenden, String.format("%02.0f", myNumber)wenn Sie die Zahlen nach dem Dezimalpunkt nicht wollen
beny23
Für diejenigen, die speziell über die String-Format-Syntax lesen möchten: Format String-Syntax
Pony
Dies wird eine Android-Linter-Warnung generieren. "Die implizite Verwendung des Standardgebietsschemas ist eine häufige Fehlerquelle: Verwenden Sie stattdessen String.format (Gebietsschema, ...)"
Christopher Stock,
1
@ChristopherStock Dies ist ein völlig anderes Problem, das mit der Verwendung des korrekten Standardgebietsschemas des Geräts zusammenhängt, auf dem die App ausgeführt wird. Sie können es ignorieren oder beheben, dies betrifft jedoch nur Android und Gebietsschemas. Nichts mit der tatsächlichen Formatierung der Zeichenfolge zu tun
Radu
55

Wenn Sie die Nummer drucken müssen, können Sie printf verwenden

System.out.printf("%02d", num);

Sie können verwenden

String.format("%02d", num);

oder

(num < 10 ? "0" : "") + num;

oder

(""+(100+num)).substring(1);
Peter Lawrey
quelle
2
Die Verwendung eines Formats ist bei weitem am langsamsten, aber es ist klarer und weniger unwahrscheinlich, dass es schrecklich schief geht. zB wenn num -1 ist. ;)
Peter Lawrey
42

Sie können dies verwenden:

NumberFormat formatter = new DecimalFormat("00");  
String s = formatter.format(1); // ----> 01
Daniel André
quelle
Dies sollte die akzeptierte Antwort sein! Das Ergebnis der Lösung über String.format kann aufgrund der Gebietsschemaeinstellungen variieren. (s. Android Linter Warnung "Die implizite Verwendung des Standardgebietsschemas ist eine häufige Fehlerquelle: Verwenden Sie String.format (Gebietsschema, ...))
Christopher Stock
3

Die String-Klasse verfügt über folgende Formatierungsfunktionen:

System.out.println(String.format("%02d", 5));

Für eine vollständige Dokumentation finden Sie hier das Dokument

Grimmy
quelle
Es heißtjava.util.IllegalFormatConversionException: %d can't format java.lang.Double arguments
Pradeep Kumar Kushwaha
2

In Android-Ressourcen ist es ziemlich einfach

<string name="smth">%1$02d</string>
Vlad
quelle