Я использую класс сканера для захвата пользовательского ввода из командной строки (только строки) в качестве альтернативы моему предыдущему вопрос.
Следующее, похоже, работает нормально, за исключением того, что пустые строки не захватываются, как должны, вторым условным оператором. Например, когда я нажимаю ввод, это должно быть захвачено как пустая строка, а второе условное выражение должно быть истинным. Однако каждый раз на консоли отображается новая пустая строка, при этом вся консоль «прокручивается» вверх, если я продолжаю нажимать ввод, а не логика в условном выражении.
Есть ли правильный способ поймать пустой ввод из командной строки с помощью сканера? (кто-то нажимает просто Enter или несколько раз нажимает пробел, а затем Enter)
Спасибо за любой совет
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();
}
}