web-dev-qa-db-ja.com

Javaで先行スペースを含む数値をフォーマットする方法

次のJavaコードを使用して、ゼロが埋め込まれた数値を生成します。

    DecimalFormat fmt = new DecimalFormat("000");
    for (int y=1; y<12; y++)
    {
        System.out.print(fmt.format(y) + " ");
    }

出力は次のとおりです。

001 002 003 004 005 006 007 008 009 010 011

私の質問は次のとおりです。先行ゼロの代わりに、スペースを埋め込んだ数値をどのように生成しますか?

1 2 3 4 5 6 7 8 9 10 11

注:StackOverflowでは、Stringのスペースのパディングを要求するいくつかのクエストンがあることを知っています。 Stringでそれを行う方法を知っています。 [〜#〜] numbers [〜#〜]を埋め込みスペースでフォーマットすることは可能ですか?

13
user3437460
    for (int y=1; y<12; y++)
    {
        System.out.print(String.format("%1$4s", y));
    }

長さ4の文字列を出力するため、y = 1の場合は3つのスペースと1を出力します "1"、yが10の場合は出力します2つのスペースと10 "10"

javadocsを参照

24
Raul Guiu
int i = 0;
while (i < 12) {
    System.out.printf("%4d", i);
    ++i;
}

4は幅です。 printfをformatに置き換えることもできます。

8
user176692