• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数行キーボード入力した後に再度入力する?)

複数行キーボード入力した後に再度入力する方法について

このQ&Aのポイント
  • 複数行まとめてキーボードから入力を得た後に、再度入力を得る方法がわからず困っています。
  • スキャナーを使用して複数行入力しCTRL_Dで入力終了後、再度キーボード入力を得ようとするとエラーが発生します。
  • BufferedReaderを使用して複数行入力し、再度キーボード入力を得ることはできますが、二回目の入力ができない問題があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • tyatsumi
  • ベストアンサー率58% (30/51)
回答No.1

1.のスキャナを使う方法で、 2回目の入力待ち String str = sc.nextLine(); の前に sc = new Scanner(System.in); をもう一度付けてみるのはどうでしょうか。 1回目の入力で終了状態になったスキャナは捨てて、 新しいスキャナで入力するという意味です。

kousai
質問者

お礼

ご回答ありがとうございます。 tyatsumiさんのご回答通りScannerの方をnewsして、コマンドラインで試してみたら出来ました。 Iteratorのように考えればいいのですね。 私が最初に書いた2のBufferedReaderは、新しくnewせずともそのまま動きました。(eclipseで試した時は出来ませんでした。) ところで、新しく書き直したScannerの方も、eclipseの方からは出来ません。(例外が発生します) コマンドラインではきちんと動くということは、eclipseのコンソールが悪いのでしょうか?

その他の回答 (1)

  • tyatsumi
  • ベストアンサー率58% (30/51)
回答No.2

Eclipseの場合Ctrl-Dがショートカットキーと重なっているかもしれないし、 Eclipseのコンソールは色々と悪そうですね。関わりたくありません。 発想を変えて、複数行の終わりをCtrl-Dで示すのをやめて、 特定の文字列からなる行が来たら複数行の終わりとするのはどうでしょう。 たとえば空行とか。たとえば「.」ドット1文字だけからなる行とか。

kousai
質問者

お礼

再度ご回答ありがとうございます。 eclipseのCtrl_dが悪いという発想はありませんでした。 ググってみたところ、eclipseで私と同じ問題に直面している人が結構いました。 http://dev.eclipse.org/newslists/news.eclipse.newcomer/msg22203.html http://forums.macosxhints.com/archive/index.php/t-55717.html http://ubuntuforums.org/showthread.php?t=470310 解決策は見つけられませんでしたが……。 環境設定を見ると、eclipseのCtrl_DのコンソールでのショートカットもEOFとなっているんですけどね。 >特定の文字列からなる行が来たら複数行の終わり どんな文字列でも入力出来るようにしたいので、ショートカットキーを使いたいんです。 諦めて、CTRL_Dが絡むプログラムではeclipseのコンソールを使うのをやめるべきでしょうか。

関連するQ&A