回答編集履歴
2
swordoneさんのご指摘を元に(というかそのまま)コードを修正
test
CHANGED
@@ -3,6 +3,14 @@
|
|
3
3
|
|
4
4
|
|
5
5
|
もう少しスッキリ書けると思いましたが、そうでも無かったです...
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
(追記)
|
10
|
+
|
11
|
+
swordoneさんのご指摘を元に(というかそのまま)コードを修正してみました。
|
12
|
+
|
13
|
+
かなりスッキリしましたね。
|
6
14
|
|
7
15
|
|
8
16
|
|
@@ -36,37 +44,21 @@
|
|
36
44
|
|
37
45
|
|
38
46
|
|
39
|
-
//
|
47
|
+
// 入学年度初日を算出
|
40
48
|
|
41
|
-
i
|
49
|
+
LocalDate first = LocalDate.of(year, 4, 1);
|
42
50
|
|
43
|
-
|
51
|
+
if (first.isAfter(input)) {
|
44
52
|
|
45
|
-
LocalDate first = today.withMonth(4).withDayOfMonth(1);
|
46
|
-
|
47
|
-
if (first.isAfter(today)) {
|
48
|
-
|
49
|
-
//
|
53
|
+
// 入学年度の4月1日が未来日なら1年前の同日
|
50
54
|
|
51
55
|
first = first.minusYears(1);
|
52
56
|
|
53
57
|
}
|
54
58
|
|
55
|
-
// 年
|
59
|
+
// 開始する数(1)+(入学年度-当日年) ※intのmaxを超えるケースは無視
|
56
60
|
|
57
|
-
|
61
|
+
return 1 + (int)ChronoUnit.YEARS.between(first, today);
|
58
|
-
|
59
|
-
// 年度調整
|
60
|
-
|
61
|
-
if (MonthDay.from(input).isBefore(MonthDay.of(4, 1))) {
|
62
|
-
|
63
|
-
// 入力日付が4月1日より前なら+1
|
64
|
-
|
65
|
-
++grade;
|
66
|
-
|
67
|
-
}
|
68
|
-
|
69
|
-
return grade;
|
70
62
|
|
71
63
|
}
|
72
64
|
|
1
変数名に違和感があったのでコードとコメントを一部修正
test
CHANGED
@@ -36,9 +36,9 @@
|
|
36
36
|
|
37
37
|
|
38
38
|
|
39
|
-
//
|
39
|
+
// 計算値に初期値:1を設定
|
40
40
|
|
41
|
-
int
|
41
|
+
int grade = 1;
|
42
42
|
|
43
43
|
// 年度初日を算出
|
44
44
|
|
@@ -54,7 +54,7 @@
|
|
54
54
|
|
55
55
|
// 年の差分を加算 (intのmaxを超えるケースは無視)
|
56
56
|
|
57
|
-
|
57
|
+
grade += ChronoUnit.YEARS.between(input, first);
|
58
58
|
|
59
59
|
// 年度調整
|
60
60
|
|
@@ -62,11 +62,11 @@
|
|
62
62
|
|
63
63
|
// 入力日付が4月1日より前なら+1
|
64
64
|
|
65
|
-
++
|
65
|
+
++grade;
|
66
66
|
|
67
67
|
}
|
68
68
|
|
69
|
-
return
|
69
|
+
return grade;
|
70
70
|
|
71
71
|
}
|
72
72
|
|