gpt4 book ai didi

java - 读取输入直到 control+d

转载 作者:行者123 更新时间:2023-12-01 06:47:35 25 4
gpt4 key购买 nike

我想提示用户开始输入字符,并且希望他们能够输入任意长的字符,直到他们按 control+d 退出。

例如,他们可以键入一串数字,例如:1234567一旦他们决定按下 control+d,他们输入的行就会显示出来(因此不必按下回车键)

我想我需要一个缓冲阅读器或其他东西。有什么建议吗?

最佳答案

rlibby 所说的很对:CTL-D 将使终端将缓冲的输入刷新到 JVM。然而,按键事件本身是由终端捕获并执行的,而不是被传递。

幸运的是,它很容易被发现。如果用户在自己的一行上点击 CTL-D,则没有要刷新的输入...对于 JVM 而言,这与 EOF 没有区别。因此,System.in.read() 将根据 InputStream 的约定返回 -1。如果您使用 BufferedReader 包装 System.inreadLine() 将返回 null

这是我刚刚编写的交互式命令行工具的主循环:

BufferedReader systemIn = new BufferedReader(new InputStreamReader(System.in, "UTF-8"));

String line;
while((line = systemIn.readLine()) != null) {
// my program loop.
}

值得指出的一件事是,如果用户在输入字符后(但在按回车键之前)按 CTL-D,您将获得这些字符。我不相信当 CTL-D 不在自己的一行上时有办法检测它。

免责声明:我不知道这如何适用于 Windows。

关于java - 读取输入直到 control+d,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5837823/

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