2012-12-09 37 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:お役立ち情報あなたが感じる場合は、これは役に立ちます。答えを受け入れることを忘れないでください。 –