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

回答編集履歴

5

\+1忘れ

2015/11/15 15:04

投稿

swordone
swordone

スコア20675

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

月比較

2015/11/15 15:04

投稿

swordone
swordone

スコア20675

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

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

2015/11/15 14:46

投稿

swordone
swordone

スコア20675

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

2015/11/15 14:44

投稿

swordone
swordone

スコア20675

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

比較

2015/11/15 14:12

投稿

swordone
swordone

スコア20675

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