Jak sformatować liczbę 0..9, aby wyświetlała się 2 cyframi (NIE jest to data)

215

Chciałbym zawsze wyświetlać liczbę poniżej 100 z 2 cyframi (przykład: 03, 05, 15 ...)

Jak mogę dodać 0 bez używania warunkowego sprawdzania, czy jest poniżej 10?

Muszę dołączyć wynik do innego ciągu, więc nie mogę użyć printf.

realtebo
źródło

Odpowiedzi:

528

Możesz użyć:

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

Zobacz także javadocs

beny23
źródło
1
Co jeśli mójNumer jest podwójny?
Fra
3
@Fra, wtedy użyłbyś, String.format("%02.0f", myNumber)jeśli nie chcesz liczb po przecinku
beny23
Dla tych, którzy chcą przeczytać konkretnie o składni formatu ciągu: Format Składnia ciągu
Kuc
Spowoduje to wygenerowanie ostrzeżenia dla systemu Android: „Domyślne używanie domyślnych ustawień narodowych jest częstym źródłem błędów: zamiast tego należy używać String.format (ustawienia regionalne, ...)”
Christopher Stock
1
@ChristopherStock To zupełnie osobny problem, związany z używaniem prawidłowych domyślnych ustawień regionalnych urządzenia, na którym działa aplikacja - możesz je zignorować lub naprawić, ale dotyczy to tylko Androida i ustawień regionalnych. Nie ma nic wspólnego z rzeczywistym formatowaniem ciągów
Radu,
55

Jeśli chcesz wydrukować numer, możesz użyć printf

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

Możesz użyć

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

lub

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

lub

(""+(100+num)).substring(1);
Peter Lawrey
źródło
2
Korzystanie z formatu jest zdecydowanie najwolniejsze, ale jest wyraźniejsze i mniej prawdopodobne jest, że okropnie się nie powiedzie. np. jeśli num to -1. ;)
Peter Lawrey
42

Możesz użyć tego:

NumberFormat formatter = new DecimalFormat("00");  
String s = formatter.format(1); // ----> 01
Daniel André
źródło
To powinna być zaakceptowana odpowiedź! Wynik rozwiązania za pośrednictwem String.format może się różnić ze względu na ustawienia regionalne. (s. Ostrzeżenie Lintera systemu Android) „Domyślne używanie domyślnych ustawień narodowych jest częstym źródłem błędów: należy używać String.format (ustawienia regionalne, ...))
Christopher Stock
3

Klasa String posiada możliwości formatowania:

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

Aby uzyskać pełną dokumentację, oto dokument

Ponury
źródło
Mówijava.util.IllegalFormatConversionException: %d can't format java.lang.Double arguments
Pradeep Kumar Kushwaha
2

W zasobach Androida jest to dość proste

<string name="smth">%1$02d</string>
Vlad
źródło