プログラミングのテクニック/出力処理(Java)

Last-modified: 2012-04-19 (木) 15:04:21

このへんが参考になると思います。
入出力(てきとーな日記)

 

System.out

標準出力に文字列+改行を出力します。System.outは標準出力、System.errだとエラー出力になります。

System.out.print(String s)
System.out.println(String s)
System.out.printf(String ptn, ...args)

printは文字列そのまま、printlnは文字列+改行を出力します。特に指定のないときはprintlnを使いましょう。後ろに改行が残っていても許容してくれるジャッジサーバーは多いです。
printfは引数をフォーマットして表示してくれます。競技プログラミングでは主にdouble型の表示に使います。

double v = 12345678.9;
System.out.println(v);
System.out.printf("%.3f\n", v);

これを実行すると

1.23456789E7
12345678.900

となります。printfは

  • 指数表記で表示されるのを防ぐ。
  • 小数点以下の桁数を指定して表示する
    という効果があります。

配列aの内容をスペース区切りで表示する場合は、

for(int i = 0;i < a.length;i++){
	if(i > 0)System.out.print(" ");
	System.out.print(a[i]);
}
System.out.println();

とすれば最後にスペースが入らず改行されるのでおすすめです。

デバッグ用(自分だけ見られれば良い)のときは

System.out.println(Arrays.toString(a));

とすれば簡潔で良いです。デバッグ表示用の関数をあらかじめつくっておけばもっと簡潔にかけます。

PrintWriter(java.io.PrintWriter)

System.outをPrintWriterでラップしてやるとなぜか普通に出力するより速くできます。

PrintWriter pw = new PrintWriter(System.out);

出力先をファイルにすることもできて

PrintWriter pw = new PrintWriter(new File("hoge.kirai"));

という感じでできます。

使い方はSystem.outのところがpwに置き換わっただけです。print,println,printfもSystem.outと同様に使えます。
また、すべて出力し終えたら

pw.flush();

を呼んで、バッファを全て出力するようにしましょう。