teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

バグじゃなかったですorz. Calendar定数置き換え不足修正

2019/05/08 09:17

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -14,10 +14,10 @@
14
14
  int year = scan.nextInt();
15
15
  int month = scan.nextInt() - 1; //月は 0 始まりとする
16
16
 
17
- java.util.Calendar cal = Calendar.getInstance();
17
+ Calendar cal = Calendar.getInstance();
18
- cal.set(Calendar.YEAR, year);
18
+ cal.set(YEAR, year);
19
- cal.set(Calendar.MONTH, month);
19
+ cal.set(MONTH, month);
20
- cal.set(Calendar.DATE, 1);
20
+ cal.set(DATE, 1);
21
21
 
22
22
  System.out.println();
23
23
  System.out.println(year + "/" + (month+1) + (((java.util.GregorianCalendar)cal).isLeapYear(year)?"(うるう年)":"") );
@@ -25,7 +25,7 @@
25
25
  System.out.println("日 月 火 水 木 金 土");
26
26
  System.out.println("---------------------");
27
27
 
28
- cal.add(Calendar.DATE, SUNDAY-cal.get(DAY_OF_WEEK)); //1日が属する週の日曜日の日付. ex)2019/5/1→2019/4/28
28
+ cal.add(DATE, SUNDAY-cal.get(DAY_OF_WEEK)); //1日が属する週の日曜日の日付. ex)2019/5/1→2019/4/28
29
29
  for (; cal.get(MONTH) <= month; cal.add(DATE, 1)) {
30
30
  System.out.printf(cal.get(MONTH)<month?" ":"%2d ", cal.get(DATE));
31
31
  if (cal.get(DAY_OF_WEEK) == SATURDAY) System.out.println();

2

週の始まりが前年だとうるう年判定に失敗するバグ対応

2019/05/08 09:17

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -18,7 +18,6 @@
18
18
  cal.set(Calendar.YEAR, year);
19
19
  cal.set(Calendar.MONTH, month);
20
20
  cal.set(Calendar.DATE, 1);
21
- cal.add(Calendar.DATE, SUNDAY-cal.get(DAY_OF_WEEK)); //1日が属する週の日曜日の日付. ex)2019/5/1→2019/4/28
22
21
 
23
22
  System.out.println();
24
23
  System.out.println(year + "/" + (month+1) + (((java.util.GregorianCalendar)cal).isLeapYear(year)?"(うるう年)":"") );
@@ -26,6 +25,7 @@
26
25
  System.out.println("日 月 火 水 木 金 土");
27
26
  System.out.println("---------------------");
28
27
 
28
+ cal.add(Calendar.DATE, SUNDAY-cal.get(DAY_OF_WEEK)); //1日が属する週の日曜日の日付. ex)2019/5/1→2019/4/28
29
29
  for (; cal.get(MONTH) <= month; cal.add(DATE, 1)) {
30
30
  System.out.printf(cal.get(MONTH)<month?" ":"%2d ", cal.get(DATE));
31
31
  if (cal.get(DAY_OF_WEEK) == SATURDAY) System.out.println();

1

Calendar 定数を import static 化

2019/05/08 09:10

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -4,6 +4,7 @@
4
4
  package calendar;
5
5
  import java.util.Calendar;
6
6
  import java.util.Scanner;
7
+ import static java.util.Calendar.*;
7
8
 
8
9
  public class Mycalendar {
9
10
  public static void main(String[] args) {
@@ -17,7 +18,7 @@
17
18
  cal.set(Calendar.YEAR, year);
18
19
  cal.set(Calendar.MONTH, month);
19
20
  cal.set(Calendar.DATE, 1);
20
- cal.add(Calendar.DATE, Calendar.SUNDAY-cal.get(Calendar.DAY_OF_WEEK)); //1日が属する週の日曜日の日付. ex)2019/5/1→2019/4/28
21
+ cal.add(Calendar.DATE, SUNDAY-cal.get(DAY_OF_WEEK)); //1日が属する週の日曜日の日付. ex)2019/5/1→2019/4/28
21
22
 
22
23
  System.out.println();
23
24
  System.out.println(year + "/" + (month+1) + (((java.util.GregorianCalendar)cal).isLeapYear(year)?"(うるう年)":"") );
@@ -25,9 +26,9 @@
25
26
  System.out.println("日 月 火 水 木 金 土");
26
27
  System.out.println("---------------------");
27
28
 
28
- for (; cal.get(Calendar.MONTH) <= month; cal.add(Calendar.DATE, 1)) {
29
+ for (; cal.get(MONTH) <= month; cal.add(DATE, 1)) {
29
- System.out.printf(cal.get(Calendar.MONTH)<month?" ":"%2d ", cal.get(Calendar.DATE));
30
+ System.out.printf(cal.get(MONTH)<month?" ":"%2d ", cal.get(DATE));
30
- if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) System.out.println();
31
+ if (cal.get(DAY_OF_WEEK) == SATURDAY) System.out.println();
31
32
  }
32
33
  }
33
34
  }