0. basamaklı bir sayı 2 basamakla görüntülenecek şekilde nasıl biçimlendirilir (bir tarih DEĞİLDİR)


215

Her zaman 100'ün altında 2 basamaklı bir sayı göstermek istiyorum (örnek: 03, 05, 15 ...)

10'un altında olup olmadığını kontrol etmek için koşullu kullanmadan 0'ı nasıl ekleyebilirim?

Başka bir dize sonucu eklemek gerekir, bu yüzden printf kullanamazsınız.

Yanıtlar:


528

Kullanabilirsiniz:

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

Ayrıca bkz.


1
MyNumber çift ise ne olur?
Fra

3
@Fra, o zaman String.format("%02.0f", myNumber)ondalık noktasından sonra sayıları istemiyorsanız kullanabilirsiniz
beny23

Dize biçimi sözdizimi hakkında özel olarak okumak isteyenler için: Format String Sözdizimi
Pony

Bu bir Android Linter Uyarı oluşturur "Örtülü olarak varsayılan yerel kullanımı yaygın bir hata kaynağıdır: Bunun yerine String.format (Locale, ...) kullanın"
Christopher Stock

1
@ChristopherStock Bu, uygulamanın çalıştığı cihazın doğru varsayılan yerel ayarını kullanmakla tamamen ayrı bir konudur - görmezden gelebilir veya düzeltebilirsiniz, ancak bu yalnızca Android ve yerel ayarlarla ilgilidir. Gerçek dize biçimlendirme ile ilgisi yok
Radu

55

Numarayı yazdırmanız gerekiyorsa printf kullanabilirsiniz

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

Kullanabilirsiniz

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

veya

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

veya

(""+(100+num)).substring(1);

2
Bir biçimi kullanmak en yavaş olanıdır, ancak daha net ve korkunç bir şekilde yanlış gitme olasılığı daha düşüktür. örneğin num -1 ise. ;)
Peter Lawrey

42

Bunu kullanabilirsiniz:

NumberFormat formatter = new DecimalFormat("00");  
String s = formatter.format(1); // ----> 01

Bu kabul edilen cevap olmalı! String.format aracılığıyla çözümün sonucu, yerel ayarlara bağlı olarak değişebilir. (s. Android Linter Warning "Varsayılan yerel ayarı dolaylı olarak kullanmak yaygın bir hata kaynağıdır: Use String.format (Locale, ...))
Christopher Stock

3

String sınıfı, biçim yetenekleriyle birlikte gelir:

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

tam dokümantasyon için, işte doktor


Öyle diyorjava.util.IllegalFormatConversionException: %d can't format java.lang.Double arguments
Pradeep Kumar Kushwaha

2

Android kaynaklarında oldukça basit

<string name="smth">%1$02d</string>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.