Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中控制台输入的过滤字符_Java_Console - Fatal编程技术网

Java中控制台输入的过滤字符

Java中控制台输入的过滤字符,java,console,Java,Console,我正在编写Java应用程序的终端版本,这是我第一次这样做。我尝试了Scanner和Console,但据我调查,这些类只允许我在用户完成输入后接收用户输入(无操作/过滤) 例如,我希望用户输入他的年龄,但如果他输入一个无意义的字符串,我所能做的就是验证该字符串并要求他再次输入。我真正想要的是只允许他输入整数,即当他按下任何不是数字的键时,字符将不会显示在控制台上。使用Swing和JTextField我可以通过DocumentFilter轻松做到这一点,但仅使用控制台,我仍然没有找到方法 感谢您的帮

我正在编写Java应用程序的终端版本,这是我第一次这样做。我尝试了
Scanner
Console
,但据我调查,这些类只允许我在用户完成输入后接收用户输入(无操作/过滤)

例如,我希望用户输入他的年龄,但如果他输入一个无意义的字符串,我所能做的就是验证该字符串并要求他再次输入。我真正想要的是只允许他输入整数,即当他按下任何不是数字的键时,字符将不会显示在控制台上。使用Swing和
JTextField
我可以通过
DocumentFilter
轻松做到这一点,但仅使用控制台,我仍然没有找到方法


感谢您的帮助。谢谢大家。

Java有一个叫做robot API的东西,你可以用它来控制键盘鼠标等。。。 不是推荐的方式:)


因为控制台不是Java程序(它是一个c程序),所以您与它的接口方式有限,也许您可以编写本机API来获得对它的更多控制。我没有尝试过,但如果需要,可以使用此选项。

我认为这是不可能的。单独输入,至少以通常的方式,通常需要
,因此我可以看出,这可能很困难……在纯Java中,以这种粒度控制控制台输入是不可能的。有一些特定于平台的、非标准的方法可以实现这一点,但只有在您确切知道自己在做什么的情况下,才应该采用这些方法。@realpointist请您给我指路!我的应用已经是特定于平台的(KDE Linux和Konsole)。谢谢你的建议。实际上,我以前用C++来处理终端输入,但我真的不想在这里使用JNI,除非它是最后的选择。机器人是用来仿真用户输入的,而不是用来过滤它的。