回答編集履歴

2

いろいろ追記

2020/07/03 09:47

投稿

YufanLou
YufanLou

スコア463

test CHANGED
@@ -29,3 +29,153 @@
29
29
 
30
30
 
31
31
  無限ループなので、止めるのはターミナルで実行してるときCtrl-Cを押してください。ウィンドウで実行してるときウィンドウを閉めればいいです。
32
+
33
+
34
+
35
+ ### 追記
36
+
37
+
38
+
39
+ 終了キーワードを設定したいなら、例えば`exit`にすると、こちらになります。
40
+
41
+
42
+
43
+ ```java
44
+
45
+ import java.io.*;
46
+
47
+ class Main
48
+
49
+ {
50
+
51
+ public static void main(String args[]) throws IOException
52
+
53
+ {
54
+
55
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
56
+
57
+ while (true) {
58
+
59
+ String s = br.readLine();
60
+
61
+ if ("exit".equals(s)) {
62
+
63
+ System.exit(0);
64
+
65
+ }
66
+
67
+ System.out.println(s);
68
+
69
+ }
70
+
71
+ }
72
+
73
+ }
74
+
75
+ ```
76
+
77
+
78
+
79
+ 機に乗ってroot_jpさんのtry文法も紹介します。
80
+
81
+
82
+
83
+ ```java
84
+
85
+ import java.io.*;
86
+
87
+ class Main
88
+
89
+ {
90
+
91
+ public static void main(String args[])
92
+
93
+ {
94
+
95
+ try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
96
+
97
+ while (true) {
98
+
99
+ String s = br.readLine();
100
+
101
+ if ("exit".equals(s)) {
102
+
103
+ System.exit(0);
104
+
105
+ }
106
+
107
+ System.out.println(s);
108
+
109
+ }
110
+
111
+ }
112
+
113
+ }
114
+
115
+ }
116
+
117
+ ```
118
+
119
+
120
+
121
+ tryの後のカッコにリソースを構築すれば、それらのリソースをtryが終わってから自動的に解放します。こちらには気にしなくてもいいですが、サーバーとか長いループの中にリソースを構築するコードには不可欠なものです。
122
+
123
+
124
+
125
+ もっと慎重にすれば、BufferedReader を何も読み込めない状況も処理しましょう。その場合はreadLine()の戻り値がnullになりますので、停止条件に追加します。
126
+
127
+
128
+
129
+ ```java
130
+
131
+ import java.io.*;
132
+
133
+ class Main
134
+
135
+ {
136
+
137
+ public static void main(String args[])
138
+
139
+ {
140
+
141
+ try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
142
+
143
+ while (true) {
144
+
145
+ String s = br.readLine();
146
+
147
+ if (s == null || "exit".equals(s)) {
148
+
149
+ System.exit(0);
150
+
151
+ }
152
+
153
+ System.out.println(s);
154
+
155
+ }
156
+
157
+ }
158
+
159
+ }
160
+
161
+ }
162
+
163
+ ```
164
+
165
+
166
+
167
+ 空行のままEnterを入力することは"\n"を読み込んで空文字列を返しますので、読み込めない状況ではありません。読み込めない状況はパイプでファイルをプログラムに導入しファイルの最後につく時です。例えば、
168
+
169
+
170
+
171
+ ```
172
+
173
+ touch text.txt
174
+
175
+ java Main.jar < text.txt
176
+
177
+ ```
178
+
179
+
180
+
181
+ こうして空ファイルをプログラムに導入する場合、何も読み込めないため、nullをprintlnしようとする時NullPointerExceptionを投げてしまいます。上記の通り s == null の場合exitすれば大丈夫です。

1

止める方法追加

2020/07/03 09:47

投稿

YufanLou
YufanLou

スコア463

test CHANGED
@@ -25,3 +25,7 @@
25
25
  }
26
26
 
27
27
  ```
28
+
29
+
30
+
31
+ 無限ループなので、止めるのはターミナルで実行してるときCtrl-Cを押してください。ウィンドウで実行してるときウィンドウを閉めればいいです。