文系プログラマーのプログラミング備忘録

Java、競プロ、数学などについて書いてます

Die tertia (ディエ・テルツィア) [yukicoder No.721]

yukicoder.me


日付が与えられるので、その二日後の日付を出力する問題です。

import java.text.SimpleDateFormat;
import java.util.*;

class Main {
	static Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {
		
		String s = sc.next();
		int y = Integer.parseInt(s.substring(0,4));
		int m = Integer.parseInt(s.substring(5,7)) - 1;
		int d = Integer.parseInt(s.substring(8,10));
		
		Calendar cl = Calendar.getInstance();
		cl.set(y, m, d);
		cl.add(Calendar.DATE, 2);
		
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
		System.out.println(sdf.format(cl.getTime()));
		
	}
}


Calendarクラスを使って実装しています。


勉強になった点は


・Calendarクラスの基本的な使い方。月が 0~11 の数値で処理されるので set する際には 1 引く、など。
・わざわざfor文を回して 0 を詰めなくても、SimpleDateFormat という便利なクラスがあったこと。
・↑に関連して、String.format() の使い方。数値 n を0詰めして8桁にする場合は、String.format("%08d", n) と書く。


の3つです。1問解くたびに自分の知らない記述方法が出てくるので、yukicoderは進めるのが大変です。