回答編集履歴
3
追記と変更
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
**StringBuffer**
|
2
2
|
|
3
|
-
`StringBuffer`を使う練習です。`insert(0,文字列)`で、読んだ文字列を先頭に挿入するので
|
3
|
+
`StringBuffer`を使う練習です。`insert(0,文字列)`で、読んだ文字列を先頭に挿入するのでreverse不要。`StringBuffer`でなくても、先頭に要素を追加できるコレクションなら同じ考え方で使えます。`System.getLineSeparator()`はOSごとに異る改行文字列を取得します。
|
4
4
|
|
5
5
|
|
6
6
|
```Java
|
@@ -70,4 +70,29 @@
|
|
70
70
|
System.out.print(result.orElse("入出力例外が発生しました"+sep));
|
71
71
|
}
|
72
72
|
}
|
73
|
+
```
|
74
|
+
|
75
|
+
###
|
76
|
+
**Deque(追記)**
|
77
|
+
|
78
|
+
Collectionの`Deque`を利用する解を追加します。考え方は、StringBufferと同じで、先頭に要素を追加します。もっともコンパクトな回答だと思われます。
|
79
|
+
|
80
|
+
```Java
|
81
|
+
import java.io.BufferedReader;
|
82
|
+
import java.io.IOException;
|
83
|
+
import java.io.InputStreamReader;
|
84
|
+
import java.util.ArrayDeque;
|
85
|
+
import java.util.Deque;
|
86
|
+
|
87
|
+
public class Assignment5_Deque {
|
88
|
+
public static void main(String[] args) {
|
89
|
+
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
|
90
|
+
var result = br.lines().collect(ArrayDeque::new,Deque::addFirst,Deque::addAll);
|
91
|
+
result.addFirst("<逆順リスト>");
|
92
|
+
result.forEach(System.out::println);
|
93
|
+
} catch (IOException e) {
|
94
|
+
System.out.println("入出力例外が発生しました");
|
95
|
+
}
|
96
|
+
}
|
97
|
+
}
|
73
98
|
```
|
2
バグ修正:StringBuilderの余分な改行を削除
answer
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
for (String line; (line = br.readLine()) != null;) {
|
17
17
|
result.insert(0, line + sep); // 先頭に追加
|
18
18
|
}
|
19
|
-
System.out.
|
19
|
+
System.out.print("<逆順リスト>" + sep + result);
|
20
20
|
} catch (IOException e) {
|
21
21
|
System.out.println("入出力例外が発生しました");
|
22
22
|
}
|
@@ -67,7 +67,7 @@
|
|
67
67
|
} catch (IOException e) {
|
68
68
|
result = Optional.empty();
|
69
69
|
}
|
70
|
-
System.out.
|
70
|
+
System.out.print(result.orElse("入出力例外が発生しました"+sep));
|
71
71
|
}
|
72
72
|
}
|
73
73
|
```
|
1
再帰版は直接出力に変更
answer
CHANGED
@@ -27,18 +27,21 @@
|
|
27
27
|
参考です。ループの代わりに再帰を利用する練習。
|
28
28
|
|
29
29
|
```Java
|
30
|
-
static final String sep = System.lineSeparator();
|
31
30
|
public static void main(String[] args) {
|
32
31
|
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
|
33
|
-
|
32
|
+
reverse(br);
|
34
33
|
} catch (IOException e) {
|
35
34
|
System.out.println("入出力例外が発生しました");
|
36
35
|
}
|
37
36
|
}
|
38
|
-
static
|
37
|
+
static void reverse(BufferedReader br) throws IOException {
|
39
38
|
String line;
|
40
|
-
if ((line = br.readLine()) == null)
|
39
|
+
if ((line = br.readLine()) == null) {
|
41
|
-
|
40
|
+
System.out.println("<逆順リスト>");
|
41
|
+
return;
|
42
|
+
}
|
43
|
+
reverse(br);
|
44
|
+
System.out.println(line);
|
42
45
|
}
|
43
46
|
```
|
44
47
|
|