gpt4 book ai didi

java - 为什么我们不能一次从 System.in 中读取一个字符?

转载 作者:太空狗 更新时间:2023-10-29 22:33:45 26 4
gpt4 key购买 nike

下面的程序打印出每个以标准方式写入的字符,但仅在写入换行符之后(至少在我的系统上是这样!)。

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);
}
}

这可以防止人们编写诸如“按任意键继续”之类的内容并强制执行诸如“按回车继续”之类的内容。

  • 这背后的根本原因是什么?
  • 是Java的限制吗?
  • 这种行为是否依赖于系统(我在 Ubuntu 上)?它在 Mac 上如何工作? window ?
  • 它取决于我运行应用程序的特定终端吗? (对我来说,它在 Eclipse 和 gnome-terminal 中的行为就像这样)
  • 有解决办法吗?

最佳答案

What is the underlying reason for this?

大多数终端默认是行缓冲的,Java 直到换行符才接收输入。

Is it a limitation of Java?

一些古老的终端可能只有行缓冲输入;尽管在大多数现代终端中应该可以禁用缓冲。

Is this behavior system-dependent (I'm on Ubuntu)? How does it work on Mac? Windows?

是的。

Is it dependent on the specific terminal I run the application in? (For me it behaves like this in Eclipse and in gnome-terminal)

是的。

Is there a workaround?

有特定于平台的黑客攻击。 curse 在 Linux 和类 Unix 平台中,在 Windows 中为 getch()。我不知道有任何跨平台方式。

相关:为什么“按任意键继续”是个坏主意:

alt text

关于java - 为什么我们不能一次从 System.in 中读取一个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4007534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com