回答編集履歴

5

\+1忘れ

2015/11/15 15:04

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
 
18
18
 
19
- 学年 = 現在の年 - 基準の年
19
+ 学年 = 現在の年 - 基準の年 + 1
20
20
 
21
21
 
22
22
 

4

月比較

2015/11/15 15:04

投稿

swordone
swordone

スコア20651

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

根本的に勘違いしていたので回答を全面改定

2015/11/15 14:46

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -1,67 +1,27 @@
1
- 年齢の計算と概念は一緒ですね。
2
-
3
- 現在の年」-「生まれ年」が、「今年誕生日えた場合の年齢」になります。
1
+ 入学年月日属する度の4月1日」を基準に考えたほうがわかやすいかと思います。
4
-
5
- 現在の日付が誕生日前なら、これから1引いた数が年齢になります。
6
2
 
7
3
 
8
4
 
9
- 今回の場合は学年なので、上記計算の齢の0歳が1学年に相当します。
5
+ 現在年月日が入学年月日より前 --YES--> 学 = 0
10
6
 
11
- なので、上の計算に1加える事になります。(誕生日前が±0、誕生日以降が+1)
7
+ |
12
8
 
13
- 誕生日に相当する日付は4月1日で固定なので、現在の日付が4月1日より前か否かでまず条件が分かれます。
9
+ NO
14
10
 
11
+
12
+
13
+ 入学の月日が4月1日より後 -> 基準年 = 入学年
14
+
15
- そして、計算結果が0以下ならば、一律0にする必要があるで、ここでも条件別れます。
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の条件を満たす\)

2015/11/15 14:44

投稿

swordone
swordone

スコア20651

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

比較

2015/11/15 14:12

投稿

swordone
swordone

スコア20651

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
+ ```