回答編集履歴
5
\+1忘れ
test
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
↓
|
18
18
|
|
19
|
-
学年 = 現在の年 - 基準の年
|
19
|
+
学年 = 現在の年 - 基準の年 + 1
|
20
20
|
|
21
21
|
↓
|
22
22
|
|
4
月比較
test
CHANGED
@@ -24,4 +24,6 @@
|
|
24
24
|
|
25
25
|
|
26
26
|
|
27
|
-
これをコード化すればいいと思います
|
27
|
+
これをコード化すればいいと思います。
|
28
|
+
|
29
|
+
「月日が4月1日より前か後か」は、`cal.get(Calendar.MONTH)`と`Calendar.APRIL`の比較が簡単です。
|
3
根本的に勘違いしていたので回答を全面改定
test
CHANGED
@@ -1,67 +1,27 @@
|
|
1
|
-
年齢の計算と概念は一緒ですね。
|
2
|
-
|
3
|
-
「
|
1
|
+
「入学年月日の属する年度の4月1日」を基準に考えたほうがわかりやすいかと思います。
|
4
|
-
|
5
|
-
現在の日付が誕生日前なら、これから1引いた数が年齢になります。
|
6
2
|
|
7
3
|
|
8
4
|
|
9
|
-
|
5
|
+
現在年月日が入学年月日より前 --YES--> 学年 = 0
|
10
6
|
|
11
|
-
|
7
|
+
|
|
12
8
|
|
13
|
-
|
9
|
+
NO
|
14
10
|
|
11
|
+
↓
|
12
|
+
|
13
|
+
入学の月日が4月1日より後 -> 基準年 = 入学年
|
14
|
+
|
15
|
-
|
15
|
+
入学の月日が4月1日より前 -> 基準年 = 入学年 - 1
|
16
|
+
|
17
|
+
↓
|
18
|
+
|
19
|
+
学年 = 現在の年 - 基準の年
|
20
|
+
|
21
|
+
↓
|
22
|
+
|
23
|
+
現在の月日が4月1日より前 -> 学年++
|
16
24
|
|
17
25
|
|
18
26
|
|
19
|
-
まとめると
|
20
|
-
|
21
|
-
|
27
|
+
これをコード化すればいいと思います
|
22
|
-
|
23
|
-
- 現在の日付が4月1日以降なら基本学年+1
|
24
|
-
|
25
|
-
- 結果が0以下なら0
|
26
|
-
|
27
|
-
このようになります。
|
28
|
-
|
29
|
-
2番目の比較をする場合、Calendarを複製して、4月1日にセットして比較することになります。
|
30
|
-
|
31
|
-
```java
|
32
|
-
|
33
|
-
Calendar cal = Calendar.getInstance(); //今日の日付
|
34
|
-
|
35
|
-
int grade = cal.get(Calendar.YEAR) - enter_year;
|
36
|
-
|
37
|
-
Calendar anotherCal = (Calendar)cal.clone();
|
38
|
-
|
39
|
-
anotherCal.set(Calendar.MONTH, 4);
|
40
|
-
|
41
|
-
anotherCal.set(Calendar.DATE, 1);
|
42
|
-
|
43
|
-
if(cal.compareTo(anotherCal) >= 0){
|
44
|
-
|
45
|
-
grade++;
|
46
|
-
|
47
|
-
}
|
48
|
-
|
49
|
-
```
|
50
|
-
|
51
|
-
---
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
追記
|
56
|
-
|
57
|
-
今回の場合、もっと簡単な比較方法がありました
|
58
|
-
|
59
|
-
```java
|
60
|
-
|
61
|
-
if(cal.get(Calendar.MONTH) >= Calendar.APRIL){
|
62
|
-
|
63
|
-
grade++
|
64
|
-
|
65
|
-
}
|
66
|
-
|
67
|
-
```
|
2
もっと簡単な比較\(月が4月以降なら\+1の条件を満たす\)
test
CHANGED
@@ -47,3 +47,21 @@
|
|
47
47
|
}
|
48
48
|
|
49
49
|
```
|
50
|
+
|
51
|
+
---
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
追記
|
56
|
+
|
57
|
+
今回の場合、もっと簡単な比較方法がありました
|
58
|
+
|
59
|
+
```java
|
60
|
+
|
61
|
+
if(cal.get(Calendar.MONTH) >= Calendar.APRIL){
|
62
|
+
|
63
|
+
grade++
|
64
|
+
|
65
|
+
}
|
66
|
+
|
67
|
+
```
|
1
比較
test
CHANGED
@@ -25,3 +25,25 @@
|
|
25
25
|
- 結果が0以下なら0
|
26
26
|
|
27
27
|
このようになります。
|
28
|
+
|
29
|
+
2番目の比較をする場合、Calendarを複製して、4月1日にセットして比較することになります。
|
30
|
+
|
31
|
+
```java
|
32
|
+
|
33
|
+
Calendar cal = Calendar.getInstance(); //今日の日付
|
34
|
+
|
35
|
+
int grade = cal.get(Calendar.YEAR) - enter_year;
|
36
|
+
|
37
|
+
Calendar anotherCal = (Calendar)cal.clone();
|
38
|
+
|
39
|
+
anotherCal.set(Calendar.MONTH, 4);
|
40
|
+
|
41
|
+
anotherCal.set(Calendar.DATE, 1);
|
42
|
+
|
43
|
+
if(cal.compareTo(anotherCal) >= 0){
|
44
|
+
|
45
|
+
grade++;
|
46
|
+
|
47
|
+
}
|
48
|
+
|
49
|
+
```
|