2012-12-09 17 views
5

Metin ağaçları görüntülemem gereken bir proje üzerinde çalışıyorum. Biçimlendirme işlemini basitleştirmek için Java'nın String.format yöntemini kullanmaya çalışıyorum, ancak değişken genişlikleri uygulamaya çalışırken sorun yaşadım.Java'nın String.format yöntemindeki değişken genişlikler

Güncel Derinlik olarak adlandırılan bir değişkenim (int) var.

ben aşağıdakileri deneyin:

String.format("%"+depth+"s"," ") + getOriginalText() + "\n"; 

Ancak aşağıdaki hatayı alıyorum.

java.util.FormatFlagsConversionMismatchException: Conversion = s, Flags = 0 

Bunu nasıl yapacağınıza dair herhangi bir öneri veya sadece döngülere yerleşmem gerekir mi?

Yardımın için teşekkürler!

+0

Bunu gerçekten soruyor musunuz? http://stackoverflow.com/questions/388461/how-can-i-pad-a-string-in-java – billjamesdev

+0

Tam kodu gönderirseniz, ne yaptığınızı anlamaya çalışıyorum. – ElderMael

+0

Bunu da merak ettim çünkü C/C++ 'nun bir '*' değiştiriciye sahip olduğunu biliyordum: 'Genişlik, format dizgesinde belirtilmemiş, ancak biçimlendirilmesi gereken argümandan önceki ek bir tamsayı değeri argümanı olarak. String.format ("% * i", pad_width, number) 'gibi bir şey arıyordu. Ama verilen cevap da mantıklı. – mxmlnkn

cevap

4

Bu çalışır:

int depth = 5; 
String str= "Hello"+ String.format("%"+depth+"s"," ") + "world" + "\n"; 
System.out.println(str); 

O 5 yazdırır alanlarda yer arasında iken.

Merhaba           Dünya.

size kodu kontrol edip depth geçerli int değeri ile atanır emin olun. Büyük olasılıkla ( depth geçersiz değer) sorun.

+0

Bu mantıklı. Sanırım düşündüğümde çok büyük bir hızım vardı. İlk arama için derinlik için sıfır geçtiğimi unuttum ve "% 0s" bir hatadır. –

+0

@PhillipHuff: Bilmekte fayda var. Eğer hissediyorsanız, bu yardımcı olur, o zaman cevabı kabul etmeyi unutmayın. –

İlgili konular