java
1import java.io.*;
2class Main
3{
4 public static void main(String args[]) throws IOException
5 {
6 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
7 while (true) {
8 String s = br.readLine();
9 System.out.println(s);
10 }
11 }
12}
無限ループなので、止めるのはターミナルで実行してるときCtrl-Cを押してください。ウィンドウで実行してるときウィンドウを閉めればいいです。
追記
終了キーワードを設定したいなら、例えばexit
にすると、こちらになります。
java
1import java.io.*;
2class Main
3{
4 public static void main(String args[]) throws IOException
5 {
6 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
7 while (true) {
8 String s = br.readLine();
9 if ("exit".equals(s)) {
10 System.exit(0);
11 }
12 System.out.println(s);
13 }
14 }
15}
機に乗ってroot_jpさんのtry文法も紹介します。
java
1import java.io.*;
2class Main
3{
4 public static void main(String args[])
5 {
6 try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
7 while (true) {
8 String s = br.readLine();
9 if ("exit".equals(s)) {
10 System.exit(0);
11 }
12 System.out.println(s);
13 }
14 }
15 }
16}
tryの後のカッコにリソースを構築すれば、それらのリソースをtryが終わってから自動的に解放します。こちらには気にしなくてもいいですが、サーバーとか長いループの中にリソースを構築するコードには不可欠なものです。
もっと慎重にすれば、BufferedReader を何も読み込めない状況も処理しましょう。その場合はreadLine()の戻り値がnullになりますので、停止条件に追加します。
java
1import java.io.*;
2class Main
3{
4 public static void main(String args[])
5 {
6 try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
7 while (true) {
8 String s = br.readLine();
9 if (s == null || "exit".equals(s)) {
10 System.exit(0);
11 }
12 System.out.println(s);
13 }
14 }
15 }
16}
空行のままEnterを入力することは"\n"を読み込んで空文字列を返しますので、読み込めない状況ではありません。読み込めない状況はパイプでファイルをプログラムに導入しファイルの最後につく時です。例えば、
touch text.txt
java Main.jar < text.txt
こうして空ファイルをプログラムに導入する場合、何も読み込めないため、nullをprintlnしようとする時NullPointerExceptionを投げてしまいます。上記の通り s == null の場合exitすれば大丈夫です。