• 締切済み

キーボード入力の終了につきまして(ループ処理内)

いつも参考にさせて頂いております佐藤と申します。 JAVA言語を勉強し初めて数ヶ月程度ですが、楽しさが分かって参りました。 質問させて頂きたい内容は、ループ処理(キーボードや入力ファイルがNULLになるまで繰り返す)でのキーボード入力をどうすれば終了させられるかです。 //読込チェック=NULLならば処理を終了させる while((check = buf.readLine())!=null){ char[] src = check.toCharArray(); ソースの一部ですが、これでは入力ファイルがNULLになれば終了出来ますが、キーボードからの入力だとNULL(何も入力せずにエンター)でも終了しません。 原因が分かる方はいらっしゃいますでしょうか? 宜しくお願い致します。

みんなの回答

回答No.1

BufferedReader#readLine() がnullを返す条件は、ストリームの終端に達した場合です(APIのドキュメントを参照して下さい)。標準入力(キーボード)からの入力ですと、Ctrl + D を押した場合にnullが返ってきます。お試し下さい。 なお、ご質問にあるように何も入力をせずにエンターを入力した場合は、"" (空文字列) を入力したことになります。"" と nullは違うので、終了しません。

satohdesu
質問者

お礼

大変ご丁寧な解答をありがとうございます。 Ctrl + D で正常終了致しました。 キーボードからの入力だと""扱いになってしまうんですね。 全くの盲点でした。 勉強になりました。 とても感謝しております。