or1ko's diary

日々を書きます

Scannerクラスの読み込み

PKU2402の問題でSなコードを書くために以下のようなコードをかいた。

 for(;;){
  long l=new Scanner(System.in).nextLong();  
  // 以下処理
 }

ローカルで実行すると、問題なく動くのだけれども、PKUに送るとRuntime Errorになる。
ループ文の外で一度だけScannerを生成した場合のときはAcceptする。標準入力がファイルの場合、うまく動かないのではないかとおもい、テストしてみたら案の定が投げられていた。Scannerの実装をみてみると、入力をバッファにためられるだけためてからトークンを取り出す仕組みになっていたので、何度目かにファイルをすべて読みこみ終えてしまい、例外を投げたのだろう。バッファのサイズはfinalなので、こういう風に書くのは無理だぁーー!こんなことしてる場合じゃないorz。