%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は許されないみたいだ。惜しい。





