<< 2008/01/07 | Home | 2008/01/09 >>
PR: 転職    転職    合宿免許    漫画    シルバー    ブライダルエステ    墓地・霊園    葬式   

%sの幅指定に0は許されない。

階層構造を表示する時、インデントを付けたい時に、今までは、

void print(Node node, int indent) {
    StringBuffer buf = new StringBuffer();
    for (int i = 0; i < indent; ++i)
        buf.append(' ');
    System.err.println
        (buf.toString() + node);
...
}

みたいなことをして、空白文字を連ねて作っていたのだけど、そういえば、printf()があったなぁと思って、

    System.err.printf
        ("%" + indent + "%s%s%n", "", node);

としたら、

Exception in thread "main" java.util.FormatFlagsConversionMismatchException: Conversion = s, Flags = 0
	at java.util.Formatter$FormatSpecifier.failMismatch(Formatter.java:3988)
	at java.util.Formatter$FormatSpecifier.checkBadFlags(Formatter.java:2904)

0は許されないみたいだ。惜しい。

このサイトの掲載内容は私自身の見解であり、必ずしもIBMの立場、戦略、意見を代表するものではありません。
日本アイ・ビー・エム 花井 志生 Since 1997.6.8