質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

Q&A

解決済

3回答

575閲覧

forかwhile文に関して【java】

tim.tk.0

総合スコア4

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

0グッド

1クリップ

投稿2020/07/03 07:06

編集2020/07/03 08:14

【質問】
BufferedReaderとfor文かwhile文??を組み合わせてキーボードに入力した文字を
オウム返しで何度でもそのまま表示させる方法が知りたいです。
ちなみに無限ループにならず、またif文を使わない方法が知りたいです。

まだまだ初心者なので質問の内容が少し分かりづらいかもしれませんがよろしくお願いします。

例)
1回目の入力→ごはん
コンソール結果
ごはん
ごはん

2回目の入力→パスタ
コンソール結果
ごはん
ごはん
パスタ
パスタ

こんな感じです。よろしくお願いします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozwk

2020/07/03 07:24

「何度でも」とはどういうことでしょうか 何をきっかけに表示すればいいんですか?
tim.tk.0

2020/07/03 07:25

お返事ありがとうございます。 キーボードで入力をし続ける限りという意味です!
ozwk

2020/07/03 07:28 編集

すみません、今意味がわかりました。 オウム返しを何度もしたいってことですね。 1回分だけなら書けますか?
tim.tk.0

2020/07/03 07:29

その通りです!こちらこそありがとうございます! 1回分だけなら書けます! そこからオウム返しでというのをfor文?を利用して組み合わせる方法がわかりません。
ozwk

2020/07/03 07:57

終了条件はなんですか?
tim.tk.0

2020/07/03 08:12 編集

文字列であればなんでも大丈夫です! 終了とかでお願いできればと思います。
guest

回答3

0

こんな感じです。
forwhileで無限ループにします。今回はwhileを使用しています。
そのまま無限にしておくと止めれないので、"exit" と入力されると終了するようにしています。

Java

1public static void main(String[] args) throws Exception { 2 try (Scanner scanner = new Scanner(System.in)) { 3 while (true) { 4 String input = scanner.nextLine(); 5 if ("exit".equals(input)) { 6 System.exit(0); 7 } 8 System.out.println(input); 9 } 10 } 11}

投稿2020/07/03 07:34

root_jp

総合スコア4666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/07/03 10:29

オウム返し系だと、ブランク(未入力)で終了のが好きw
guest

0

ベストアンサー

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すれば大丈夫です。

投稿2020/07/03 07:33

編集2020/07/03 09:47
YufanLou

総合スコア463

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tim.tk.0

2020/07/03 08:25

ご回答ありがとうございます。ちなみに無限ループにならずに終了と入力するとおわる場合の処理はどのようになりますでしょうか?
guest

0

java

1while(true){ 2 // ここに繰り返したいこと 3}

または

java

1for(;;){ 2 // ここに繰り返したいこと 3}

投稿2020/07/03 07:32

ozwk

総合スコア13521

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問