当前位置: 首页 > 面试题库 >

控制台应用程序中的Java键盘输入解析

商佑运
2023-03-14
问题内容

我刚刚开始弄乱JLine来解析控制台模式下的字符输入。看来运作良好,但我想知道:

JLine中是否有非阻塞方式来查找字符是否可用?(例如,kbhit()在Windows中。)

我想我总是可以将键盘输入包装在其自己的线程中,该线程随后将键盘字符提供给主线程一个线程安全的队列,但这似乎是不必要的。

编辑 :这是逐字符解析。我不会使用GUI。在控制台模式下,Java中通常的InputStream I /
O要求您首先按Enter键(例如,仅缓冲输入)。请不要告诉我,在Java中,在控制台模式下逐字符输入是不可能的;不是。JLine使用具有平台相关性实现的可移植接口来实现。

编辑更新 :我能够一起攻克一个助手类,以在工作线程中执行阻塞的I / O(使用JLine进行按字符的I /
O,警告:您必须自己解析Ctrl-C!)然后进行交流通过带有isempty()例程的同步队列。对于我现在正在做的事情来说,这很好,但是我真的很想知道一种将来做这件事的好方法


问题答案:

您似乎走在正确的轨道上。

我认为执行此操作的“正确”方法是将所有阻塞I /
O倒入非阻塞队列的工作线程。可以从java.util.concurrent看一下ConcurrentLinkedQueue。



 类似资料:
  • 问题内容: 我一直在尝试从Java应用程序中检索“ unicode用户输入”,以获得一个小的实用程序片段。问题是,它似乎在“开箱即用”的Ubuntu上运行,我猜它在UTF-8上具有操作系统范围的编码,但是从“ cmd”运行时在Windows上不起作用。考虑的代码如下: 在Ubuntu上的输出(不对配置进行任何更改): 在Windows CMD提示符下输出(绝不受JAVA_TOOL_OPTIONS影

  • 问题内容: 现在,我正在开发类似于bash的命令行应用程序。为了实现自动完成功能,我必须知道用户已经按下Tab键。但是我不知道如何在控制台应用程序中监听键盘事件。 有任何想法吗?提前致谢。 问题答案: 这比看起来要复杂一些。 也许您应该看一下为您处理所有事情的jline项目。

  • 问题内容: 通过控制台进行任何输入的数据类型(如我使用BufferedReader类所做的那样)为String。之后,我们将其类型转换为需要查询的数据类型(如Inter.parseInt()为整数)。但是在C语言中,我们可以接受任何输入原始数据类型,而在Java中,所有输入类型都是Neccerily String。为什么是这样? 问题答案: 控制台输入实际上以一系列字节而不是字符串的形式读入。这是

  • 问题内容: 我想控制Javafx TextField中的输入,以便只允许数字输入,这样,如果超出了最大字符数,则不会对文本框进行任何更改。 编辑:根据评论中的建议,我使用了JavaFX项目负责人建议的方法。阻止输入字母非常有用。我只需要它也可以过滤特殊字符。我尝试将过滤器更改为(text.matchs(“ [0-9]”),但不允许输入退格键。 edit2:找出一个特殊字符和长度的过滤器。这是我的最

  • 问题内容: 我在java swing中有一个计算器应用程序,可以通过鼠标单击输入正常工作。现在,我希望它使用键盘按钮的笔触来读取输入。我在Java教程中听说过 玻璃板 ,但是我需要知道任何其他简单的方法来满足要求。 问题答案: 是一个使用和 键绑定 进行数字输入的示例。

  • 我有一些多行文字作为控制台输入。诸如此类: 行数可能每次都不同(一、二、三、四等,但不是零),但这个文本总是在瞬间用行分隔符(一个粘贴,而不是按回车键输入几个)输入。这个Java应用程序必须立即开始对这些行做些什么,但出于某种原因,我不明白如何做出这种行为。我的意思是,它必须将所有这些行保存到,或,或