java - 如何在 java 中使用扫描器类捕获空白输入

标签 java user-input inputstream java.util.scanner

我正在使用扫描器类从命令行捕获用户输入(仅限字符串),作为我之前的 question 的替代方案.

以下似乎工作正常,除了空行没有被第二个条件捕获。例如,当我按回车键时,这应该被捕获为一个空行,第二个条件应该为真。然而,每次在控制台上都会显示一个新的空白行,如果我一直按回车键,整个控制台会向上“滚动”,而不是条件中的逻辑。

是否有正确的方法来使用扫描仪从命令行捕获空白输入? (有人敲一下就进入,或者敲几下空格再进入)

谢谢你的建议

Machine aMachine = new Machine();
String select;
Scanner br = new Scanner(System.in); 
 while(aMachine.stillInUse()){
  select = br.next();
        if (Pattern.matches("[rqRQ1-6]", select.trim())) {
        aMachine.getCommand(select.trim().toUpperCase()).execute(aMachine);
        }
        /*
         * Ignore blank input lines and simply
         * redisplay current status -- Scanner doesn't catch this
         */
        else if(select.trim().isEmpty()){
        aMachine.getStatus();

        /*
         * Everything else is treated
         * as an invalid command
         */
    else {                
            System.out.println(aMachine.badCommand()+select);
            aMachine.getStatus();
        }
    }

最佳答案

Scanner 是用于输入的文件 I/O 的“傻瓜式”实现。它允许教程和教科书作者编写演示代码,而不必提示它的复杂性。

如果你真的想知道你在读什么,你必须这样说

BufferedReader br = new BufferedReader(new FileReader("myfile.txt"))

...然后你就可以做

String line = br.readLine()

只看到真相。

关于java - 如何在 java 中使用扫描器类捕获空白输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1737816/

相关文章:

java - 如何打印 HashMap 中的值而不打印重复项?

java - Intellij IDEA 找不到包类型

java - 修复我的循环并需要输入检查器、Java 方面的帮助

java - 从java运行oracle sql脚本

java - 安卓。 fragment 不保存它们的状态

java - 将出现的空格分配给变量

python-3.x - tkinter 用户输入小部件到 xlsx

python - 用户输入值用作十进制值python

java - 如何从 InputStream 转换为 AudioInputStream

java - Process.getInputStream() 不返回所有行