2012-12-09 70 views
5

我正在處理一個需要顯示文本樹的項目。我試圖使用Java的String.format方法來簡化格式化過程,但是在嘗試應用可變寬度時遇到了麻煩。Java的String.format方法中的可變寬度

當前我有一個稱爲深度的變量(一個int)。

我儘量做到以下幾點:

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

不過,我得到以下錯誤。

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

有關如何做到這一點的任何建議,或者我應該只是解決循環?

感謝您的幫助!

+0

你真的在問這個嗎? http://stackoverflow.com/questions/388461/how-can-i-pad-a-string-in-java – billjamesdev

+0

你可以發佈完整的代碼,我試圖理解你在做什麼。 – ElderMael

+0

我想知道這也是因爲我知道C/C++有一個'*'修飾符:'寬度沒有在格式字符串中指定,而是作爲必須被格式化的參數前面的附加整數值參數。正在搜索'String.format(「%* i」,pad_width,number)''。但是給定的答案也是有意義的。 – mxmlnkn

回答

4

這工作:

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

它打印5,而空格之間。

你好         世界。

請檢查您的代碼並確保爲depth分配了有效的int值。最有可能的是(depth中的無效值)是問題所在。

+0

這很有道理。我想我有一個沉重的失誤。我忘記了第一次調用的深度爲零,「%0s」是一個錯誤。 –

+0

@PhillipHuff:很高興知道。如果你覺得,這是有幫助的,那麼不要忘記接受答案。 –