【发布时间】:2009-11-15 15:25:14
【问题描述】:
我正在使用扫描程序类从命令行捕获用户输入(仅限字符串),作为我之前的 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();
}
}
【问题讨论】:
-
我也希望问这是否是从命令行读取用户输入的正确方法。例如,我应该处理什么常见的异常?感谢您的任何解释
-
为了挑剔,这些代码都不会从命令行读取 - 你的参数在 main() 的 args 中。但你说的是标准输入。
标签: java user-input inputstream java.util.scanner