Это фактически не работает:
char c = reader.next().charAt(0);
В этом вопросе есть несколько хороших объяснений и ссылок: Почему класс Scanner не имеет метода nextChar? «Сканер разбивает свой вход на токены, используя шаблон разделителя», который довольно открыт. Например, при использовании этого
c = lineScanner.next().charAt(0);
для этой строки ввода "(1 + 9) / (3 - 1) + 6 - 2" вызов следующего возврата "(1", c будет установите значение '(', и вы потеряете «1» при следующем вызове next ()
Обычно, когда вы хотите получить персонажа, вы хотели бы игнорировать пробелы. Это сработало для me:
c = lineScanner.findInLine("[^\\s]").charAt(0);
Ссылка: regex соответствует одному символу, который является чем угодно, кроме пробела
Я закончил тем, что использовал плагин Relevanssi - https://wordpress.org/plugins/relevanssi/ и объединил его с WPadvancedsearch, он на самом деле хорошо работает вместе и позволяет мне делать все, что мне нужно.