System.out.printf()とは

Javaで文字列を表示するときに、小数点2桁で表示したい時や、3桁ごとに「,」を挿入したい場合などがある。
そんなときに便利なのがSystem.out.printf()だ。
これを使うと、

name + “(” + age + “)さん、こんにちは!”

といった、面倒かつコーディングミスの温床ともなる+による文字列連結からも解放される。

さっそく使ってみよう。

[小数点を2桁で表示したい場合]

例えば以下のようなdoubleの数値があったとする。

double bmi=21.79930795847751;

これを小数点2桁で表示したい。

その場合は

double bmi=21.79930795847751;
System.out.printf("BMIは%.2fです。",bmi);

としてあげると

BMIは21.80です。

と表示される。(小数点第3位で四捨五入)

小数点一桁がよければ

System.out.printf(“BMIは%.1fです。”,bmi);

とすればよい。

[3桁ごとに,を埋め込みたい場合]

例えば以下のような金額を表す数値があったとする
int money =10000000;

これに3桁ごとに,(カンマ)を加えたければ

int money =10000000;
System.out.printf("所持金は%,d円です。",money);

これで

所持金は10,000,000円です。

と表示される。

[使い方]

2つの具体例をみてもわかるが、System.out.printf()は文字列の中に%~という書式文字列を埋め込んで使う。

System.out.printf(“BMIは%.2fです。”,bmi);

System.out.printf(“所持金は%,d円です。”,money);

この書式文字列位置に第2引数以降の部分の値が埋め込まれることになる。

また、複数の書式文字列を埋め込むこともできる。

String name="山田";
int age=20;
System.out.printf("%s(%d)さん、こんにちは!",name,age);

とすると

山田(20)さん、こんにちは!

と表示される

文字列の中に%~で書式を埋め込んだ数だけ、変数や値をカンマ区切りで列挙していけばよい。

[よく使われる書式文字列]

それではよく使われる書式文字列について見てみよう。

%s 文字列(string) “%sさん”,”山田” 山田さん
%d 数値(decimal) “x=%d”, 5 x=5
%5d 少なくとも5桁
足りない桁は空白
“x=%5d”, 5 x=  5
%05d 少なくとも5桁
足りない桁は0埋め
“x=%05d”, 5 x=00005
%,d 3桁毎に,を挿入 “x=%,d”, 5000 x=5,000
%f 少数(floating-point) “x=%f”, 10.123 x=10.123
%.2f 少数点以下2桁 “x=%.2f”, 10.123 x=10.12
%7.1f 少なくとも7桁、うち小数点以下1桁 “x=%7.1f”, 10.123 x=  10.1

 

まずはよく使うここら辺を覚えていくと良い。

[More・・・]

初期化文字列はこの他にもたくさんある。さらに知りたい人は手短にまとまっている以下のサイトを参照するとよいだろう。

Java書式付き出力