LoginSignup
8
3

More than 3 years have passed since last update.

【Java】printfで書式を指定して出力する%s,%d,%f【フォーマット指定子】

Posted at

表示形式を指定する関数

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

アルファベットの意味を理解していればそれほど敬遠するものでもなかった

  1. %sのsはString
  2. %fのfはfloat(浮動小数点)
  3. %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では表示は同じ。

8
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3