ICPCでのJavaの入出力

  2009/06/20 05:51

最近どこへ行ってもJava派が少なくて悲しい限りです。
別にJava信者ってわけじゃないんですが、業務で使うのがそれなので・・・。
時間があればC++もやりたいけど。

ICPCなどの大会で標準出力を使ってデータを扱いたい時は、java.util.Scannerが便利です。

Scanner s = new Scanner(System.in);

// 次の数値型を取得してポインタを進める
int i = s.nextInt();
double d = s.nextDouble();

// 1行を取得してポインタを次の行へ進める
String linie = s.nextLine(); 

// まだ入力があればtrueを返す。
if (s.hasNext()) ;

例。

	HanafudaShuffle() throws FileNotFoundException{
		InputStream in = System.in;
		Scanner s = new Scanner(in);

		while (true) {
			int n = s.nextInt();
			int r = s.nextInt();

			if (n==0 && r==0) break;

			List list = new LinkedList<Integer>();
			for (int j = 0; j < n; j++)
				list.add(n - j);
			for (int i = 0; i < r; i++)
				list = shuffle(list, s.nextInt() - 1, s.nextInt());
			System.out.println(list.get(0));
		}
	}

大した機能はないんですが、この何気ないScanner#nextInt()がとても素敵だと思います。