はじめまして、
Javaの学習をしているリリーともうします。

C言語のように、
以下に示すようなことをしたいのですが、
Javaではうまくいきません。(泣

    printf( "%04H\n", 31 );

Javaで、以下のコードを実行すると例外が発生してしまいます。
(FormatFlagsConversionMismatchException)

    System.out.printf( "%04H%n", 31 );

上記を実現させるために、
以下のようなコードを書いているのですが、
こんなことしないとダメなのでしょうか?

    finel int ACCURACY = 4;

    int i = ACCURACY - Integer.toHexString( a ).length();
    while( i-- > 0 ) System.out.print( "0" );

    System.out.printf( "%H%n", a );

スマートな方法がありましたらおしえてください。
おねがいします。

-- 
リリー