System.out.printlnメソッドでの数値出力時、異なる桁数の数値を複数出力すると見づらい場合があります。
【サンプルプログラム】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class Digits{ public static void main(String[ ] args){ System.out.println(10); System.out.println(1000); System.out.println(1); System.out.println(100); } } |
図)出力結果
この様な場合には「桁揃え」を指定すると見やすくなります。
Javaで桁揃えを行う場合、
- Stringクラスのformatメソッドを利用する
- System.out.printfメソッドを利用する
といった手法がありますので、一つずつ紹介していきます。
①:Stringクラスのformatメソッドを利用する
formatメソッドは書式付き文字列を返します。指定できる書式に桁揃えがあります。
【サンプルプログラム】
1 2 3 4 5 6 7 8 9 10 11 |
class Digits{ public static void main(String[ ] args){ String str = String.format("%4d", 10); // 書式付き文字列の生成 System.out.println(str); // 出力 } } |
図)出力結果
formatメソッドの第1引数には書式文字列を指定します。書式文字列中の「%d」部分に、第2引数で指定した10が当てはめられて文字列を生成しています。
下記の様に、一度に複数の数値を指定することも可能です。
こちらの場合は、書式文字列中の最初の「%d」部分に第2引数で指定した10が当てはめられ、2つ目の「%d」部分に第3引数で指定した100が当てはめられて文字列を生成しています。「%4d」と「%4d」の間の「,」は見やすくするための単なる区切り文字です。好きな文字や記号で構いません。
「%d」を指定する際に「%」と「d」の間に桁数を指定することができます。サンプルの場合は「%4d」となっていますので、「4桁揃え」となります。
4桁揃えの場合4文字目に一の位がくるように位置が調整されます。
【サンプルプログラム】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
class Digits{ public static void main(String[ ] args){ String str = String.format("%4d", 10); System.out.println(str); str = String.format("%4d", 1000); System.out.println(str); str = String.format("%4d", 1); System.out.println(str); str = String.format("%4d", 100); System.out.println(str); } } |
図)出力結果
②:System.out.printfメソッドを利用する
formatメソッドの様に毎回文字列を生成するのが煩わしい場合は、printfメソッドでも同じ出力を得られます。使用感もformatメソッドとほとんど変わりません。
【サンプルプログラム】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class Digits{ public static void main(String[ ] args){ System.out.printf("%4d\n", 10); System.out.printf("%4d\n", 1000); System.out.printf("%4d\n", 1); System.out.printf("%4d\n", 100); } } |
図)出力結果
printfメソッドは文字列出力のメソッドです。printlnメソッドとは異なり、書式を指定しながら出力させることができます。
書式の指定はformatメソッドと変わりません。書式文字列中の「%d」部分に第2引数以降の値が当てはめられます。「%○d」として桁揃えできる点も同様です。
こちらはprintメソッド同様、改行が必要な場合は「\n」を書式文字列内に指定しておきます。
また、formatメソッドは文字列を生成しますが、printfは出力のみです。
文字列を加工・保持しておきたい場合はformatメソッド、出力だけしたい場合はprintfメソッド、と使い分けると良いでしょう。
最後に表形式のデータを桁揃えしてみましょう。
【サンプルプログラム:九九の表(桁揃え無し)】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
class Digits{ public static void main(String[ ] args){ for(int i=1; i<=9; i++){ for(int j=1; j<=9; j++){ System.out.print(i * j + " "); } System.out.println(); } } } |
図)出力結果
【サンプルプログラム:九九の表(桁揃え有り)】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
class Digits{ public static void main(String[ ] args){ for(int i = 1; i <= 9; i++){ for(int j = 1; j <= 9; j++){ System.out.printf("%3d", i * j); } System.out.println(); } } } |
図)出力結果
このように、表形式にデータを並べたい場合などに桁揃えを用いると格段に見やすくなります。