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