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.

Odpowiedzi:


528

Możesz użyć:

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

Zobacz także javadocs


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

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

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


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>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.