Java中控制台输入的过滤字符
我正在编写Java应用程序的终端版本,这是我第一次这样做。我尝试了Java中控制台输入的过滤字符,java,console,Java,Console,我正在编写Java应用程序的终端版本,这是我第一次这样做。我尝试了Scanner和Console,但据我调查,这些类只允许我在用户完成输入后接收用户输入(无操作/过滤) 例如,我希望用户输入他的年龄,但如果他输入一个无意义的字符串,我所能做的就是验证该字符串并要求他再次输入。我真正想要的是只允许他输入整数,即当他按下任何不是数字的键时,字符将不会显示在控制台上。使用Swing和JTextField我可以通过DocumentFilter轻松做到这一点,但仅使用控制台,我仍然没有找到方法 感谢您的帮
Scanner
和Console
,但据我调查,这些类只允许我在用户完成输入后接收用户输入(无操作/过滤)
例如,我希望用户输入他的年龄,但如果他输入一个无意义的字符串,我所能做的就是验证该字符串并要求他再次输入。我真正想要的是只允许他输入整数,即当他按下任何不是数字的键时,字符将不会显示在控制台上。使用Swing和JTextField
我可以通过DocumentFilter
轻松做到这一点,但仅使用控制台,我仍然没有找到方法
感谢您的帮助。谢谢大家。Java有一个叫做robot API的东西,你可以用它来控制键盘鼠标等。。。 不是推荐的方式:)
因为控制台不是Java程序(它是一个c程序),所以您与它的接口方式有限,也许您可以编写本机API来获得对它的更多控制。我没有尝试过,但如果需要,可以使用此选项。我认为这是不可能的。单独输入,至少以通常的方式,通常需要
,因此我可以看出,这可能很困难……在纯Java中,以这种粒度控制控制台输入是不可能的。有一些特定于平台的、非标准的方法可以实现这一点,但只有在您确切知道自己在做什么的情况下,才应该采用这些方法。@realpointist请您给我指路!我的应用已经是特定于平台的(KDE Linux和Konsole)。谢谢你的建议。实际上,我以前用C++来处理终端输入,但我真的不想在这里使用JNI,除非它是最后的选择。机器人是用来仿真用户输入的,而不是用来过滤它的。