Я пишу код, который преобразует infix в postfix для назначения hw. Я отлаживал его, но я не могу понять, почему, когда он выскакивает из стека она возвращает «(» вместо «+»Почему стек сбрасывается (а не +
StackInterface<Character> stack = new ArrayStack<Character>();
String postfix = "";
int length = infxEx.length();
for(int i =0; i != length; ++i){
char oneChar =infxEx.charAt(i);
if(oneChar == '('){
stack.push(oneChar);
}else
if(oneChar == '*' || oneChar == '/'|| oneChar == '%'|| oneChar == '+' || oneChar == '-'){
stack.push(oneChar);
//error checking input is int
}
else if(oneChar == ')'){
while (stack.pop() != '(' && !stack.empty()){
char popoff = stack.pop();
postfix = postfix + popoff;
}
}
Спасибо!
Добавление ввода, которое позволяет нам воспроизводить проблему, было бы неплохо. – fabian
Этот алгоритм неверен. Он не обрабатывает приоритет оператора. Вам нужно найти алгоритм Дейнстра-Шунтинга. – EJP