Javaの勉強中です
Exclipseをもちいて開発しております
Scanner sc = new Scanner(System.in);
などのコードのとき
どうすればキーボードからの入力がおわり
という状況にできますか
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
質問文から察するに読み込む回数が決まっていないようですね。だったらwhile文を使いましょう(^-^)
あとは終了条件を書くだけです。
java
1import java.util.Scanner; 2 3class Test{ 4 public static void main(String[] args){ 5 Scanner cin = new Scanner(System.in); 6 String line; 7 while(true){ 8 line=cin.nextLine(); 9 if(line.equals("owari")){ 10 break; 11 } 12 } 13 } 14}
投稿2017/06/19 23:27
総合スコア139
0
Eclipseのコンソールでも、Eclipseのバージョンなど(?)によってコンソールの振る舞いは違うようです。
linuxのterminalなどですと大抵sttyの設定で特定のキー(Control-Dのことが多い?)により標準入力をEOF(End of file)状態にできるのでScanner#hasNextLineメソッドがfalseを返してくれるような状況にできるのですが・・・
それも環境によって微妙に振る舞いが違うようで、例えばWindowsのcygwin上だと(ちゃんとしたLinux環境でないのですが)期待通りにEOFとなってくれません。
しかしUbuntu上の端末でControl-Dを入力するとちゃんとEOFになってくれます。
Eclipseのコンソールにせよ、それ以外のシェル環境にせよ安定してEOF(end of file)を検出してくれるとは限らないようなので、コンソールからのキーボード入力を前提とするならchankaneさん回答のように「このパターンを入力したら終了と見做す」というプログラム上のルールを決めてコーディングするのが確実かも知れません。
なお、前述のようにWindowsのcygwinでsttyでeofをControl-Dに割り当ててもそれがうまくScannerでは検出されないのですが
cat - | java ScannerMain
などのようにEOFを検出してくれるcatコマンドを通じてパイプとして標準入力をJavaプログラムに渡すとちゃんとhasNextLineがfalseの状態となってくれます。なかなかややこしいことになっているようです。
投稿2017/06/20 02:10
総合スコア18392
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。