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.

Antworten:


528

Sie können verwenden:

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

Siehe auch die Javadocs


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);

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

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


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>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.