+
соответствует хотя бы одному символу
*
соответствует любому числу (включая 0) символов
. ?
указывает ленивое выражение, поэтому оно будет соответствовать как можно меньше символов.
Проблема в том, что метод eval
возвращает int
, и вы пытаетесь поместить результат в Stack<Character>
.
Я не совсем уверен, что вы пытаетесь сделать здесь, но это не компилируется, потому что int
нельзя напрямую преобразовать в Character
.
Вы можете решить проблему компиляции, вставив явное приведение к char
stack.push((char)eval(token, a, b));
, но это преобразует результат eval
в значение в диапазоне char
, что вероятно, не то, что вы хотите сделать для значений, которые могут легко выходить за пределы диапазона [0..65535] char
.