質問編集履歴

2

変更点追記

2016/06/26 00:47

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -2,25 +2,75 @@
2
2
 
3
3
  ラムダ式、StreamAPIを用いて以下の機能を実装したいと考えております。
4
4
 
5
-
5
+ ・引数のリストから最大値の取得
6
+
6
-
7
+ ・引数のリストから特定の文字を表示させる
8
+
9
+ ・引数のリストから偶数のみを格納したリストを返す
10
+
7
- ・引数のリストから重複している要素を
11
+ ・引数のリストから重複している要素を
8
12
 
9
13
  排除したハッシュセットを返す
10
14
 
11
-
12
-
13
- ・引数の年月日から半年前の年月日を返す
15
+ ・引数の年月日から半年前の年月日を返す
16
+
17
+
14
18
 
15
19
 
16
20
 
17
21
  ###発生している問題
18
22
 
23
+ ・引数のリストから最大値を取得させるところの
24
+
25
+ Optional<Integer> max = intLits.max(Comparator.naturalOrder());
26
+
27
+ のintLits.maxのmaxのところで
28
+
29
+ The method max(Comparator.naturalOrder()) is undefined for the type List<Integer>
30
+
31
+ というエラーが出てしまい対処法が不明
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+ ・特定の文字を抽出させる方法が不明
40
+
41
+ ・偶数のみを格納したリストを
42
+
43
+ 結果用のリストに格納させたいが
44
+
45
+ (i -> resultList.add(i));のところで
46
+
47
+ Multiple markers at this line
48
+
49
+ - Syntax error, insert "AssignmentOperator Expression" to complete
50
+
51
+ Expression
52
+
53
+ - Syntax error, insert ")" to complete Expression
54
+
55
+ というエラーが出てしまい対処に困っている
56
+
57
+
58
+
59
+ ・引数の月から半年前の日付を表示させる方法(関数)が不明
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+ 追加事項:
68
+
19
- forEachとstrListにおいて
69
+ forEachとstrListにおいて
20
70
 
21
71
  - Void methods cannot return a value
22
72
 
23
- - The method forEach(Consumer<? super String>) in the type Stream<String> is not
73
+ - The method forEach(Consumer<? super String>) in the type Stream<String> is not
24
74
 
25
75
  applicable for the arguments ((<no type> str) -> {})
26
76
 
@@ -28,39 +78,43 @@
28
78
 
29
79
 
30
80
 
31
-
81
+ // 引数の年月日から6ヵ月前の年月日を返すところで
32
82
 
33
83
  LocalDateクラスのminusMonthsメソッドを使用してみたのですが
34
84
 
35
-
36
-
37
- String resultDate = LocalDate.parse(strDate, DateTimeFormatter.ofPattern("yyyy-MM-dd"))のところで
85
+ tring resultDate = LocalDate.parse(strDate, DateTimeFormatter.ofPattern("yyyy-MM-dd"))のところで
38
-
39
-
40
-
86
+
41
- 以下のエラーが発生してしまいました。
87
+ 以下のエラーが発生してしまいました。
42
88
 
43
89
  Type mismatch: cannot convert from LocalDate to String
44
90
 
45
-
46
-
91
+
92
+
47
- どちらもエラーの対処法と
93
+ どちらもエラーの対処法と
48
-
94
+
49
- コードの訂正法を教えていただきたいです。
95
+ コードの訂正法を教えていただきたいです。
50
-
51
-
52
96
 
53
97
  なるべく早く実装させたいので宜しくお願いします。
54
98
 
55
-
56
-
57
-
58
-
59
-
60
-
61
99
  ###該当のソースコード
62
100
 
101
+
102
+
63
-
103
+ public class Answer {
104
+
105
+ // 引数のリストから最大値を取得する
106
+
107
+ private Integer task1(List<Integer> intLits) {
108
+
109
+ //optionalクラス値を持てるクラス(nullCheckを省略(?))
110
+
111
+ //comparator=関数型のインターフェース(ここでは最大値取得を定義(?))
112
+
113
+ Optional<Integer> max = intLits.max(Comparator.naturalOrder());
114
+
115
+ return max.get();
116
+
117
+ }
64
118
 
65
119
  // 引数のリストから重複している要素を除外したリストを返す
66
120
 
@@ -72,65 +126,107 @@
72
126
 
73
127
  .forEach(str -> strList); // 結果用リストに格納
74
128
 
75
-
76
-
77
- // 結果用のリストを返却する
78
-
79
- return resultList;
80
-
81
- }
82
-
83
-
84
-
85
-
86
-
87
- // 引数の年月日から6ヵ月前の年月日を返す
88
-
89
- private String task5(String strDate) {
90
-
91
- String resultDate = LocalDate.parse(strDate, DateTimeFormatter.ofPattern("yyyy-MM-dd")) // 文字列から日付へ変換する
92
-
93
- // 月から6を引く
94
-
95
- LocalDate.of(2016,06,26).minusMonths(-6)
96
-
97
- .format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); // 引数の書式で文字列に再変換する
98
-
99
- return resultDate;
100
-
101
- }
102
-
103
-
104
-
105
-
106
-
107
-
108
-
109
- //実行時のコード
110
-
111
-
112
-
113
- // strListの中から一意の要素を取り出す
114
-
115
- System.out.println(answer.task4(strList));
116
-
117
-
118
-
119
- // 6ヵ月前の年月日を表示する
120
-
121
- System.out.println(answer.task5("2016-06-26"));
122
-
123
-
124
-
125
-
129
+ // 引数のリストから「晴れ」のみを表示する
130
+
131
+ private void task2(List<String> strList) {
132
+
133
+ strList.stream().filter(str -> str) // リストの中から"晴れ"のみを抽出
134
+
135
+ .forEach(System.out::println); // 要素の出力
136
+
137
+ }
138
+
139
+ // 引数のリストから偶数のみを格納したリストを返す
140
+
141
+ private List<Integer> task3(List<Integer> intList) {
142
+
143
+ List<Integer> resultList = new ArrayList<>();
144
+
145
+ intList.stream().filter(i -> i % 2 == 0); // 要素を2で割って余りが0の要素を抽出
146
+
147
+ (i -> resultList.add(i)); // 結果用リストに格納
148
+
149
+ // 結果用のリストを返却する
150
+
151
+ return resultList;
152
+
153
+ }
154
+
155
+ // 引数のリストから重複している要素を除外したリストを返す
156
+
157
+ private List<String> task4(List<String> strList) {
158
+
159
+ List<String> resultList = new ArrayList<>();
160
+
161
+ strList.stream().distinct() // 要素をequalsで比較し、重複した要素を除く
162
+
163
+ .forEach(str -> strList); // 結果用リストに格納
164
+
165
+ // 結果用のリストを返却する
166
+
167
+ return resultList;
168
+
169
+ }
170
+
171
+ // 引数の年月日から6ヵ月前の年月日を返す(変更前)
172
+
173
+ private String task5(String strDate) {
174
+
175
+ String resultDate = LocalDate.parse(strDate, DateTimeFormatter.ofPattern("yyyy-MM-dd")) // 文字列から日付へ変換する
176
+
177
+ // 月から6を引く
178
+
179
+ .format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); // 引数の書式で文字列に再変換する
180
+
181
+ return resultDate;
182
+
183
+ }
184
+
185
+ /
186
+
187
+ // 引数の年月日から6ヵ月前の年月日を返す(変更後)
188
+
189
+ private String task5(String strDate) {
190
+
191
+ String resultDate = LocalDate.parse(strDate, DateTimeFormatter.ofPattern("yyyy-MM-dd")) // 文字列から日付へ変換する
192
+
193
+ // 月から6を引く
194
+
195
+ LocalDate.of(2016,06,26).minusMonths(-6)
196
+
197
+ .format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); // 引数の書式で文字列に再変換する
198
+
199
+ return resultDate;
200
+
201
+ }
202
+
203
+
204
+
205
+
206
+
207
+
208
+
209
+ //実行時のコード
210
+
211
+
212
+
213
+ // strListの中から一意の要素を取り出す
214
+
215
+ System.out.println(answer.task4(strList));
216
+
217
+
218
+
219
+ // 6ヵ月前の年月日を表示する
220
+
221
+ System.out.println(answer.task5("2016-06-26"));
222
+
223
+
224
+
225
+
126
226
 
127
227
  ###試したこと
128
228
 
129
- 参考書やサイトを見
229
+ 参考書やサイトを見ながら自分なに実装
130
-
131
- こちらで質問をし、返ってきた回答例を踏まえ自分なりに実装
132
-
133
-
134
230
 
135
231
 
136
232
 

1

解決すべき問題の変更

2016/06/26 00:47

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -3,12 +3,6 @@
3
3
  ラムダ式、StreamAPIを用いて以下の機能を実装したいと考えております。
4
4
 
5
5
 
6
-
7
- ・引数のリストから最大値の取得
8
-
9
- ・引数のリストから特定の文字を表示させる
10
-
11
- ・引数のリストから偶数のみを格納したリストを返す
12
6
 
13
7
  ・引数のリストから重複している要素を
14
8
 
@@ -22,49 +16,37 @@
22
16
 
23
17
  ###発生している問題
24
18
 
25
-
19
+ forEachとstrListにおいて
26
20
 
21
+ - Void methods cannot return a value
27
22
 
23
+ - The method forEach(Consumer<? super String>) in the type Stream<String> is not
28
24
 
29
- ・引数のリストから最大値を取得させるところの
25
+ applicable for the arguments ((<no type> str) -> {})
30
26
 
31
- Optional<Integer> max = intLits.max(Comparator.naturalOrder());
32
-
33
-
34
-
35
- のintLits.maxのmaxのところで
36
-
37
- The method max(Comparator.naturalOrder()) is undefined for the type List<Integer>
38
-
39
- というエラーがてしまい対処法が不明
27
+ というエラーが発生してしまいました。
40
28
 
41
29
 
42
30
 
43
31
 
44
32
 
45
- ・特定の文字を抽出させる方法が不明
46
-
47
- ・偶数のみを格納したリストを
48
-
49
- 結果用のリストに格納させたいが
50
-
51
- (i -> resultList.add(i));ところ
33
+ LocalDateクラスのminusMonthsメソッドを使用してみたのですが
52
-
53
- Multiple markers at this line
54
-
55
- - Syntax error, insert "AssignmentOperator Expression" to complete
56
-
57
- Expression
58
-
59
- - Syntax error, insert ")" to complete Expression
60
-
61
- というエラーが出てしまい対処に困っている
62
34
 
63
35
 
64
36
 
65
- ・引数の月から半年前の日付を表示させる方法(関数)が不明
37
+ String resultDate = LocalDate.parse(strDate, DateTimeFormatter.ofPattern("yyyy-MM-dd"))のところで
66
38
 
67
39
 
40
+
41
+ 以下のエラーが発生してしまいました。
42
+
43
+ Type mismatch: cannot convert from LocalDate to String
44
+
45
+
46
+
47
+ どちらもエラーの対処法と
48
+
49
+ コードの訂正法を教えていただきたいです。
68
50
 
69
51
 
70
52
 
@@ -80,97 +62,73 @@
80
62
 
81
63
 
82
64
 
83
- public class Answer {
65
+ // 引数のリストから重複している要素を除外したリストを返す
84
66
 
85
- // 引数のリストから最大値を取得する
67
+ private List<String> task4(List<String> strList) {
86
68
 
87
- private Integer task1(List<Integer> intLits) {
69
+ List<String> resultList = new ArrayList<>();
88
70
 
89
- //optionalクラス値を持てるクラス(nullCheck省略(?))
71
+ strList.stream().distinct() // 要素をequalsで比較し、重複した要素除く
90
72
 
91
- //comparator=関数型のインターフェース(ここでは最大値取得を定義(?))
92
-
93
- Optional<Integer> max = intLits.max(Comparator.naturalOrder());
73
+ .forEach(str -> strList); // 結果用リストに格納
94
-
95
- return max.get();
96
-
97
- }
98
74
 
99
75
 
100
76
 
101
- // 引数のリストから「晴れ」のみ表示する
77
+ // 結果用のリストを返却する
102
78
 
103
- private void task2(List<String> strList) {
79
+ return resultList;
104
80
 
105
- strList.stream().filter(str -> str) // リストの中から"晴れ"のみを抽出
106
-
107
- .forEach(System.out::println); // 要素の出力
108
-
109
- }
81
+ }
110
-
111
-
112
-
113
- // 引数のリストから偶数のみを格納したリストを返す
114
-
115
- private List<Integer> task3(List<Integer> intList) {
116
-
117
- List<Integer> resultList = new ArrayList<>();
118
-
119
- intList.stream().filter(i -> i % 2 == 0); // 要素を2で割って余りが0の要素を抽出
120
-
121
- (i -> resultList.add(i)); // 結果用リストに格納
122
-
123
-
124
-
125
- // 結果用のリストを返却する
126
-
127
- return resultList;
128
-
129
- }
130
-
131
-
132
-
133
- // 引数のリストから重複している要素を除外したリストを返す
134
-
135
- private List<String> task4(List<String> strList) {
136
-
137
- List<String> resultList = new ArrayList<>();
138
-
139
- strList.stream().distinct() // 要素をequalsで比較し、重複した要素を除く
140
-
141
- .forEach(str -> strList); // 結果用リストに格納
142
-
143
-
144
-
145
- // 結果用のリストを返却する
146
-
147
- return resultList;
148
-
149
- }
150
-
151
-
152
-
153
- // 引数の年月日から6ヵ月前の年月日を返す
154
-
155
- private String task5(String strDate) {
156
-
157
- String resultDate = LocalDate.parse(strDate, DateTimeFormatter.ofPattern("yyyy-MM-dd")) // 文字列から日付へ変換する
158
-
159
- // 月から6を引く
160
-
161
- .format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); // 引数の書式で文字列に再変換する
162
-
163
- return resultDate;
164
-
165
- }
166
82
 
167
83
 
168
84
 
169
85
 
170
86
 
87
+ // 引数の年月日から6ヵ月前の年月日を返す
88
+
89
+ private String task5(String strDate) {
90
+
91
+ String resultDate = LocalDate.parse(strDate, DateTimeFormatter.ofPattern("yyyy-MM-dd")) // 文字列から日付へ変換する
92
+
93
+ // 月から6を引く
94
+
95
+ LocalDate.of(2016,06,26).minusMonths(-6)
96
+
97
+ .format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); // 引数の書式で文字列に再変換する
98
+
99
+ return resultDate;
100
+
101
+ }
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+ //実行時のコード
110
+
111
+
112
+
113
+ // strListの中から一意の要素を取り出す
114
+
115
+ System.out.println(answer.task4(strList));
116
+
117
+
118
+
119
+ // 6ヵ月前の年月日を表示する
120
+
121
+ System.out.println(answer.task5("2016-06-26"));
122
+
123
+
124
+
125
+
126
+
171
127
  ###試したこと
172
128
 
173
- 参考書やサイトを見ながら自分なに実装
129
+ 参考書やサイトを見
130
+
131
+ こちらで質問をし、返ってきた回答例を踏まえ自分なりに実装
174
132
 
175
133
 
176
134
 
@@ -181,3 +139,5 @@
181
139
  使用言語:Java
182
140
 
183
141
  使用ツール:STS
142
+
143
+ 使用OS:Windows10