###表示形式を指定する関数
printf()などの、最後にfがつく関数を使用する場合には、表示形式を指定して出力することが可能。
今まで使っていなかったが、いろいろ自分で使って試してみないことにはものにできないので、みながら試してみましょう。
###それぞれの書式の意味
指定子 | 対応する型 | 説明 |
---|---|---|
%s | string | 文字列を出力 |
%d | int | 整数を10進法で出力 |
%f | float | 実数を出力 |
###使用例
public class MyApp {
public static void main(String[] args) {
int score = 50; // %dが対応する
double height = 165.8; // %fが対応する
String name = "mako"; // %sが対応する
System.out.printf("name: %s, score: %d, height: %f\n", name, score, height);
System.out.printf("name: %-10s, score: %10d, height: %5.2f\n", name, score, height);
String s = String.format("name: %-10s, score: %-10d, height: %5.2f\n", name, score, height);
System.out.println(s);
}
}
実行結果
name: mako, score: 50, height: 165.800000
name: mako , score: 50, height: 165.80
name: mako , score: 50 , height: 165.80
###アルファベットの意味を理解していればそれほど敬遠するものでもなかった
- %sのsはString
- %fのfはfloat(浮動小数点)
- %dのdはDecimal(10進法)
これを念頭に考えれば、それほど敬遠するような物でもなかったですね。ただ、printfの引数の書き方はちょっと初心者にはややこしく移る気がしますが、後ろに順番通りに変数名を引数として渡してあげればいいだけのこと。
落ち着いて2、3個自分で試してみるとすぐ理解できる。
###表示桁を指定したり、右詰め左詰めも指定できる
%10s // 10桁分準備して右詰め
%-10s // 10桁分準備して左詰め
%10s // 10桁分準備して右詰め
%-10s // 10桁分準備して左詰め
%5.3f // 整数部分を5桁、少数部分を3桁で表示
最後の%5.3fについては、整数部分は指定してもあんまり意味がないような気がします。。。
public static void main(String[] args) {
double f = 12345.12345;
System.out.printf("%f\n", f);
System.out.printf("%.3f\n", f);
System.out.printf("%3.3f\n", f);
}
}
実行結果
12345.123450
12345.123
12345.123
整数部分は指定した桁数よりも多い場合はそのまま表示される。
変化があるのは少数部分。
%.3fと%3.3fでは表示は同じ。