回答編集履歴

3

追記と変更

2020/04/09 23:42

投稿

xebme
xebme

スコア1083

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- `StringBuffer`を使う練習です。`insert(0,文字列)`で、読んだ文字列を先頭に挿入するのでsort不要。`StringBuffer`でなくても、先頭に要素を追加できるコレクションなら同じ考え方で使えます。`System.getLineSeparator()`はOSごとに異る改行文字列を取得します。
5
+ `StringBuffer`を使う練習です。`insert(0,文字列)`で、読んだ文字列を先頭に挿入するのでreverse不要。`StringBuffer`でなくても、先頭に要素を追加できるコレクションなら同じ考え方で使えます。`System.getLineSeparator()`はOSごとに異る改行文字列を取得します。
6
6
 
7
7
 
8
8
 
@@ -143,3 +143,53 @@
143
143
  }
144
144
 
145
145
  ```
146
+
147
+
148
+
149
+ ###
150
+
151
+ **Deque(追記)**
152
+
153
+
154
+
155
+ Collectionの`Deque`を利用する解を追加します。考え方は、StringBufferと同じで、先頭に要素を追加します。もっともコンパクトな回答だと思われます。
156
+
157
+
158
+
159
+ ```Java
160
+
161
+ import java.io.BufferedReader;
162
+
163
+ import java.io.IOException;
164
+
165
+ import java.io.InputStreamReader;
166
+
167
+ import java.util.ArrayDeque;
168
+
169
+ import java.util.Deque;
170
+
171
+
172
+
173
+ public class Assignment5_Deque {
174
+
175
+ public static void main(String[] args) {
176
+
177
+ try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
178
+
179
+ var result = br.lines().collect(ArrayDeque::new,Deque::addFirst,Deque::addAll);
180
+
181
+ result.addFirst("<逆順リスト>");
182
+
183
+ result.forEach(System.out::println);
184
+
185
+ } catch (IOException e) {
186
+
187
+ System.out.println("入出力例外が発生しました");
188
+
189
+ }
190
+
191
+ }
192
+
193
+ }
194
+
195
+ ```

2

バグ修正:StringBuilderの余分な改行を削除

2020/04/09 23:42

投稿

xebme
xebme

スコア1083

test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  }
36
36
 
37
- System.out.println("<逆順リスト>" + sep + result);
37
+ System.out.print("<逆順リスト>" + sep + result);
38
38
 
39
39
  } catch (IOException e) {
40
40
 
@@ -136,7 +136,7 @@
136
136
 
137
137
  }
138
138
 
139
- System.out.println(result.orElse("入出力例外が発生しました"));
139
+ System.out.print(result.orElse("入出力例外が発生しました"+sep));
140
140
 
141
141
  }
142
142
 

1

再帰版は直接出力に変更

2020/04/05 05:21

投稿

xebme
xebme

スコア1083

test CHANGED
@@ -56,13 +56,11 @@
56
56
 
57
57
  ```Java
58
58
 
59
- static final String sep = System.lineSeparator();
60
-
61
59
  public static void main(String[] args) {
62
60
 
63
61
  try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
64
62
 
65
- System.out.println("<逆順リスト>" + sep + reverse(br, new StringBuffer()));
63
+ reverse(br);
66
64
 
67
65
  } catch (IOException e) {
68
66
 
@@ -72,13 +70,21 @@
72
70
 
73
71
  }
74
72
 
75
- static StringBuffer reverse(BufferedReader br, StringBuffer buff) throws IOException {
73
+ static void reverse(BufferedReader br) throws IOException {
76
74
 
77
75
  String line;
78
76
 
79
- if ((line = br.readLine()) == null) return buff;
77
+ if ((line = br.readLine()) == null) {
80
78
 
81
- return reverse(br, buff.insert(0, line + sep));
79
+ System.out.println("<逆順リスト>");
80
+
81
+ return;
82
+
83
+ }
84
+
85
+ reverse(br);
86
+
87
+ System.out.println(line);
82
88
 
83
89
  }
84
90