下面的程序打印标准输入上写入的每个字符,但仅在写入换行符后才打印(至少在我的系统上!)。
public class Test {
public static void main(String[] args) throws java.io.IOException {
int c;
while ((c = System.in.read()) != -1)
System.out.print((char) c);
}
}
这可以防止人们编写“按任意键继续”之类的内容,并强制执行“按 Enter 继续”之类的内容。
- 这背后的根本原因是什么?
- 这是Java的限制吗?
- 这种行为与系统相关吗(我在 Ubuntu 上)?它在 Mac 上如何工作?视窗?
- 它取决于我运行应用程序的特定终端吗? (对我来说,它在 Eclipse 和 gnome-terminal 中的行为是这样的)
- 有解决方法吗?
这背后的根本原因是什么?
大多数终端默认是行缓冲的,Java 在换行之前不会接收输入。
这是Java的限制吗?
一些古老的终端可能只有行缓冲输入;尽管应该可以在大多数现代终端中禁用缓冲。
这种行为与系统相关吗(我在 Ubuntu 上)?它在 Mac 上如何工作?视窗?
Yes.
它取决于我运行应用程序的特定终端吗? (对我来说,它在 Eclipse 和 gnome-terminal 中的行为是这样的)
Yes.
有解决方法吗?
有一些特定于平台的技巧。curse
在 Linux 和类 Unix 平台中使用 getch(),在 Windows 中使用 getch()。我不知道任何跨平台的方式。
related:为什么“按任意键继续”是个坏主意:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)