Die tertia (ディエ・テルツィア) [yukicoder No.721]
日付が与えられるので、その二日後の日付を出力する問題です。
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は進めるのが大変です。