Javaプログラミング
書式指定でコンソール出力について
Javaには、変数やクラスに格納されている値をコンソール画面に出力するメソッドが用意されいてます。
printfメソッドは、指定した書式で変数を出力することができます。例えば、桁数の指定、0埋め、右詰めなどです。
書式は、フォーマット指定子と文字を組み合わせた文字列で指定します。書式のフォーマット指定子の順番どおりに、書式の後に変数(定数でも良い)を指定します。その際、指定子の数と型を合わせる必要があります。
System.out.prinft( 書式, 変数, …, 変数 );
以下にフォーマット指定子と対応する変数型をまとめました。ここでは、桁数などの指定については書いていません。
指定子 | 対応する変数型 | 説明 |
---|---|---|
%d | int,long,short,byte | 整数を10進数で出力 |
%f | float,double | 実数を出力 |
%c | char | 文字を出力 |
%s | String | 文字列を出力 |
具体的な出力例
出力例1
int a = 100; System.out.prinft( "%d", a );
出力結果
100
出力例2
次の例は、フォーマット指定子と文字を組み合わせた例です。
int a = 100; System.out.prinft( "変数aの値は、%d", a );
出力結果
変数aの値は、100
出力例3
int a = 100; double b = 123.4567; System.out.prinft( "a=%d b=%f", a, b );
出力結果
a=100 b=123.456700;
"%d"が変数a、"%f"が変数bの値に変わっています。"%d"は整数、"%f"は実数に対応する指定子です。この例の場合、出力する桁数を書式で指定していないので小数以下の桁数は、値によって変わります。
Javaソースコード
ここから、基本的なフォーマット指定子を使ったJavaのソースコード例を紹介します。これらのソースは、いろいろな型の変数に値を代入し、その変数をコンソール出力するものです。また、printfメソッドは改行しないので、printlnメソッドで改行しています。
"%d"を使ったソースコード
PrintfSampleD.java
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025
public class PrintfSampleD { public static void main( String[] args ) { // フォーマット指定子"%d"を使用 int i = 123; long l = 123; short s = 123; byte b = 123; // int型の変数を出力 System.out.printf( "%d", i ); System.out.println(); // long型の変数を出力 System.out.printf( "%d", l ); System.out.println(); // short型の変数を出力 System.out.printf( "%d", s ); System.out.println(); // byte型の変数を出力 System.out.printf( "%d", b ); System.out.println(); } }
PrintfSampleD.javaの出力結果
123 123 123 123
"%f"を使ったソースコード
PrintfSampleF.java
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015
public class PrintfSampleF { public static void main( String[] args ) { // フォーマット指定子"%f"を使用 float f = 123.4567f; double d = 123.4567; // float型の変数を出力 System.out.printf( "%f", f ); System.out.println(); // double型の変数を出力 System.out.printf( "%f", d ); System.out.println(); } }
PrintfSampleF.javaの出力結果
123.456703 123.456700
float型、double型の変数の値が、フォーマット指定子"%f"で出力されています。float型の値が"123.4567"でないのは、float型で持てる値に誤差があるからです。ここでは詳しく説明しません。
"%s"を使ったソースコード
PrintfSampleS.java
001 002 003 004 005 006 007 008 009 010
public class PrintfSampleS { public static void main( String[] args ) { // フォーマット指定子"%s"を使用 String s = "ABCDEFG"; // String型の変数を出力 System.out.printf( "%s", s ); System.out.println(); } }
PrintfSampleS.javaの出力結果
ABCDEFG
String型の値が、フォーマット指定子"%s"で出力されています。
"%c"を使ったソースコード
PrintfSampleC.java
001 002 003 004 005 006 007 008 009 010
public class PrintfSampleC { public static void main( String[] args ) { // フォーマット指定子"%c"を使用 char c = 'A'; // charg型の変数を出力 System.out.printf( "%c", c ); System.out.println(); } }
PrintfSampleC.javaの出力結果
A
以上です。