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