1


0

printfを使用したJavaでの簡単なフォーマットの質問

私は12個の数字の配列を持っています

int ary2[] = {3,5,9,11,15,18,22,23,30,31,35,39};

数字を2桁、数字の間にスペースを空けて印刷します。

印刷例は次のとおりです。

 3  5  9 11 15 18 22 23 30 31 35 39

これは私が得た距離です。

for(int i = 0; i < ary2.length; i++)
{
    System.out.printf("%-3s", ary2[i]);
}

私はこれで新しいです。 私はこれを宿題として直接提出するつもりはありませんが、私の宿題プロジェクトと提携しています。したがって、とにかくその宿題タグを使用します。

編集:回答が見つかりました。

2 Answer


4


質問を理解しているかどうかはよくわかりません。 あなたのコード例は既にそれをしているように見えます。 または、それらを数字として扱いますか(右揃え)? その場合は、代わりに(%)の %s(文字列)の`%d`が必要です。 以下がニーズに合っているかどうかを確認してください。

System.out.printf("%2d ", ary2[i]);

これは印刷されます:

 3  5  9 11 15 18 22 23 30 31 35 39

元のコードの代わりに:

3  5  9  11 15 18 22 23 30 31 35 39

あなたは最後のスペースで生きるだけです;)

http://java.sun.com/javase/6/docs/api/java/util/Formatter.html#syntax [java.util.Formatter API]でその他のフォーマットルールを見つけることができます。


0


他の回答とコメントを読んで、問題が何であるかわからない、私はあなたが0詰めされた数字を表示したいと思う:

    System.out.printf(" %02d", ary2[i]);

0で埋められていない、2つの「場所」、他の人がすでに書いたように:

    System.out.printf(" %2d", ...

最初にスペースを入れます…​ しかし、私の好み

他の文字をスペースの区切りとして使用して、何が起こっているかを確認できます。 + `System.out.printf(" ^%2d "、ary2 [i]);`のようなもの

行の先頭または末尾のスペースを避けたい場合は、出力を分割する必要があります

    System.out.printf("%2d", ary2[0]);  // no space here
    for(int i = 1; i < ary2.length; i++)
    {
        System.out.printf(" %2d", ary2[i]);
    }

またはそのようなことをする(私の好みではない)

    for(int i = 0; i < ary2.length; i++)
    {
        System.out.printf("%s%2d", (i == 0 ? "" : " "), ary2[i]);
    }