Java学習中の者です。
Javaのcalendarクラスを使用していた際に、原因の分からない点が
出てきたため質問をさせていただきます。
現在「年」と「月」を入力すると、入力値に応じて「年・月・日・曜日」を
出力するプログラムを作成しているのですが、
Calendarのsetメソッドを使用したところ、「月」にズレが発生してしまいました。
コード内のコメントに記載しておりますが、
monthList内の値に対してCalendarの月(MONTH)をセットしたところ、
月が1つズレてしまいました。
ググッてみたのですが、Calendarクラスのズレに関しては
「1月は0として扱う」という記述くらいしか見つからず、こちらで質問をさせていただきました。
どうか、ご助言をよろしくお願いいたします。
コードは以下の通りです。
Java
1 public static void main(String args[]) { 2 3 Calendar calendar = Calendar.getInstance(); 4 5 List<Integer> yearList = new ArrayList<Integer>(); 6 List<Integer> monthList = new ArrayList<Integer>(); 7 8 yearList.add(2020); 9 monthList.add(4); 10 monthList.add(5); 11 12 calendar.set(calendar.YEAR, yearList.get(0)); 13 14 System.out.println(calendar.get(calendar.YEAR)); 15 16 for (int i = 0; i < monthList.size(); i++) { 17 18 System.out.println(monthList.get(i)); 19 calendar.set(calendar.MONTH, monthList.get(i)); 20 System.out.println(calendar.get(calendar.MONTH)); 21 /** 22 * 1回目のループ:monthList.get(i) = 4 23 * calendar.get(calendar.MONTH) = 4 24 * 2回目のループ:monthList.get(i) = 5 25 * calendar.get(calendar.MONTH) = 6 26 * 27 * 2回目のループでcalendar.get(calendar.MONTH) = 6と 28 * なってしまう原因が分からない。 29 */ 30 switch (calendar.get(calendar.MONTH)) { 31 case (0): 32 System.out.println("1月"); 33 break; 34 case (1): 35 System.out.println("2月"); 36 break; 37 case (2): 38 System.out.println("3月"); 39 break; 40 case (3): 41 System.out.println("4月"); 42 break; 43 case (4): 44 System.out.println("5月"); 45 break; 46 case (5): 47 System.out.println("6月"); 48 break; 49 case (6): 50 System.out.println("7月"); 51 break; 52 case (7): 53 System.out.println("8月"); 54 break; 55 case (8): 56 System.out.println("9月"); 57 break; 58 case (9): 59 System.out.println("10月"); 60 break; 61 case (10): 62 System.out.println("11月"); 63 break; 64 case (11): 65 System.out.println("12月"); 66 break; 67 } 68 69 for (int j = 1; j <= calendar.getActualMaximum(calendar.DATE); j++) { 70 71 calendar.set(calendar.DATE, j); 72 System.out.println(calendar.get(calendar.DATE)); 73 74 switch (calendar.get(calendar.DAY_OF_WEEK)) { 75 case (1): 76 System.out.println("日曜日"); 77 break; 78 case (2): 79 System.out.println("月曜日"); 80 break; 81 case (3): 82 System.out.println("火曜日"); 83 break; 84 case (4): 85 System.out.println("水曜日"); 86 break; 87 case (5): 88 System.out.println("木曜日"); 89 break; 90 case (6): 91 System.out.println("金曜日"); 92 break; 93 case (7): 94 System.out.println("土曜日"); 95 break; 96 } 97 } 98 } 99 }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/17 07:50
2020/05/17 07:55