道歉,如果这个琐碎的问题已经得到解答,我无法在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 和其他没有可重复行为的键,但循环是随机中断的)
答案 0 :(得分:10)
Control
+ D
应该将EOF字符作为例外发送,但这是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.
关注here
在Windows中使用Eclipse时,Control + Z
会发送EOF字符。
答案 1 :(得分: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。
答案 2 :(得分:0)
使用 control-D字符(按住控制键时键入D)指示程序从标准输入流中读取您已完成输入的输入。 control-D字符通常写为 ^ D 。