5

如果这个微不足道的问题已经得到解答,我深表歉意,我在 SO 上找不到它。使用此 Java 简单代码(Windows 7 和 Eclipse Kepler)从 IDE 控制台读取行:

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 字符作为 excepted 发送,但它是 Eclipse 中的一个错误。

其中一位用户报告为

    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-D 不起作用,而 ctrl-C 起作用:

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(最后三个是 EOT,CR,LF,我猜,不确定在这种情况下 ^D 是什么)。然后我尝试了 ctrl-C 并发送了“-1”输入结束。因此,正如 Dev 所说,这似乎取决于 shell。

于 2014-05-19T16:28:56.190 回答
-1

使用control-D 字符(在按住 control 键的同时键入 D)向从标准输入流中读取的程序指示您已完成输入。control-D 字符通常写为^D

于 2014-05-19T16:19:52.127 回答