5

この些細な質問が既に回答されている場合はお詫び申し上げます。SO で見つけることができません。この Java の簡単なコードを使用して IDE コンソールから行を読み取る (Windows 7 および Eclipse Kepler):

int v;
try { while ((v = System.in.read()) != -1) System.out.println(v); }
catch (IOException e) { ; }

ユーザーはどのように値 v を -1 に等しくすることができますか? (私はCtrl+ d- z- x- c- s-eと他のキーを反復可能な動作なしで試しましたが、ループはランダムに中断されます)

4

3 に答える 3

13

Control+Dは EOF 文字を exceptiond として送信する必要がありますが、これは Eclipse のバグです。

として報告されたユーザーの 1 人

    In Kepler 4.3 eclipse.buildId=4.3.0.M20130911-1000 on Linux the problem 
    still exists in the Java console. I found the following workaround:

    If you leave the console to focus on another view, and then refocus on the console,
    then Ctrl-D (EOF) works as expected.

ここに従ってください


Windows で Eclipse を使用する場合Control + Z、EOF 文字を送信します。

于 2014-05-19T16:26:28.763 に答える
1

Windows コマンド プロンプトで Groovy を使用してこれをテストすると、ctrl-C は機能しますが、ctrl-D は機能しません。

C:>groovy -e "while(v = System.in.read()){ println v }"
^D
4
13
10
-1
Terminate batch job (Y/N)? y

最初に ctrl-D を押してから入力すると、ctrl-D、4、13、10 が出力されます (最後の 3 つは EOT、CR、LF です。この場合、^D が何を意味するかはわかりません)。次に、ctrl-C を試したところ、'-1' の入力終了が送信されました。Devが言うように、これはシェルに依存しているようです。

于 2014-05-19T16:28:56.190 に答える
-1

コントロール D 文字(コントロール キーを押しながら D を入力) を使用して、標準入力ストリームから読み取るプログラムに対して、入力の入力が完了したことを示します。Control-D 文字は、しばしば^Dと書かれます。

于 2014-05-19T16:19:52.127 に答える