謎です。

import java.util.*;

public class Test {
   public static void main(String[] args) {
      Calendar cal = Calendar.getInstance();

      for ( int i = 0 ; i < 12 ; i++ ) {
         cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) - 1);
         System.out.println(cal.get(Calendar.YEAR) + "年" + (cal.get(Calendar.MONTH) + 1) + "月");
      }
   }
}

これを実行すると

2003年4月
2003年3月
2003年3月
2003年2月
...

のように表示されます。何で3月が2回出てくるのでしょうか?
ちなみにPC日付を2004年や2008年にすると希望通りに表示されます。
どして?