回答編集履歴

3

code

2016/11/20 14:25

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -12,6 +12,112 @@
12
12
 
13
13
  ---
14
14
 
15
+
16
+
17
+ ###3と4の補足
18
+
19
+ 配列やListの宣言は簡単な方法があります。
20
+
21
+ ```java
22
+
23
+ String[] names = {"田中次郎", "谷中次郎", "竹中次郎", "田口次郎", "田中一郎"};
24
+
25
+ List<String> list = Arrays.asList("19800411", "19761105", "19920615", "19850918", "19900511");
26
+
27
+ ```
28
+
29
+ ###5について
30
+
31
+ > for文ループ 配列の中身が自分の名前と一致したときに配列から氏名変数を代入してループを抜ける。抜ける際にループ回数を表示
32
+
33
+
34
+
35
+ これをそのままやればいいんです。あなたのコードには「氏名変数を代入」と「ループを抜ける」が抜けているのです。
36
+
37
+ ```java
38
+
39
+ for( int i = 0; i < names.length; i++ ) {
40
+
41
+ if( names[i].equals("田中一郎") {
42
+
43
+ System,out.println((i + 1) + "回"); // 括弧が全角になっていた
44
+
45
+ name = names[i]; // 指名変数を代入
46
+
47
+ break; //ループを抜ける
48
+
49
+ }
50
+
51
+ }
52
+
53
+ ```
54
+
55
+
56
+
57
+ ###6について
58
+
59
+ > for文 5と違うループ 、誕生日が自分と一致したら誕生日から年齢を出し、年齢をリストから代入 ループ回数を表示
60
+
61
+
62
+
63
+ 「5と違うループ」と言うのはおそらく拡張for文を使えということでは?
64
+
65
+ ```java
66
+
67
+ for (String day : list) {
68
+
69
+ //処理
70
+
71
+ }
72
+
73
+ ```
74
+
75
+ ただこちらも「ループ数の表示」があるので、for文の外にループカウントを別途置く必要があるのか…
76
+
77
+ 普通のfor文のほうが良さそうです(出題意図がわからないので推測)。
78
+
79
+ ただ現状のforループも間違いだらけです。
80
+
81
+ ```java
82
+
83
+ // Listに可視なsizeというフィールドはない。メソッドsize()ならある
84
+
85
+ for( int i = 0; i < list.size(); i++ ) {
86
+
87
+ //変数に括弧付けて数値という書き方はない Stringと数値は比較できない
88
+
89
+ if(list.get(i).equals("1990511")) {
90
+
91
+ SimpleDateFormat sdf = new SimpleDateFormat( "yyyyMMdd");
92
+
93
+ int now = Integer.parseInt(sdf.format(new Date());
94
+
95
+ //birthdayも数値化しないとこのあとの計算ができない
96
+
97
+ int birthday = Integer.parseInt(list.get(i));
98
+
99
+ //ここでint ageとするとローカル変数の宣言になり、前と重複する。前で宣言した変数に代入することで意味を成す
100
+
101
+ //数値リテラルはコンマ区切りすると意味が変わる 桁区切りしたいなら_(アンダースコア)
102
+
103
+ age = (now- birthday)/ 10_000;
104
+
105
+ System.out.println(i + 1);
106
+
107
+ break;
108
+
109
+ }
110
+
111
+ }
112
+
113
+
114
+
115
+ ```
116
+
117
+
118
+
119
+ ---
120
+
15
121
  (以下は間違い 年齢の算出方法は成立していた)
16
122
 
17
123
 

2

年齢算出は成立していました

2016/11/20 14:25

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -8,6 +8,14 @@
8
8
 
9
9
  そこが配列と異なるだけであとはほとんど一緒なのですが。
10
10
 
11
+
12
+
13
+ ---
14
+
15
+ (以下は間違い 年齢の算出方法は成立していた)
16
+
17
+
18
+
11
19
  ただし、年齢の出し方がおかしいです。
12
20
 
13
21
  あなたの計算だと19900511(1990年5月11日)が誕生日で、今日が20160401だとすれば、

1

誤字\(際→歳\)

2016/11/20 10:26

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -12,4 +12,4 @@
12
12
 
13
13
  あなたの計算だと19900511(1990年5月11日)が誕生日で、今日が20160401だとすれば、
14
14
 
15
- まだその年の誕生日を迎えてないので25歳のはずですが、この計算だと26になってしまいます。
15
+ まだその年の誕生日を迎えてないので25歳のはずですが、この計算だと26になってしまいます。