2013-07-14 2 views
0

Добрый день! Я использую инфикс для постфиксного конвертера, используя стеки. Он работает, когда пользователь вводит инфиксное выражение без скобок; но когда скобка присутствует, консоль говорит:
Проблемы с стеком в префиксе для постфиксного преобразователя

Exception in thread "main" StackEmptyException: Stack is empty. 
    at ArrayStack.top(ArrayStack.java:85) 
    at InfixToPostfix.convert(InfixToPostfix.java:54) 
    at InfixToPostfix.main(InfixToPostfix.java:85) 


Моя проблема заключается в реализации ранга (в верхней части стека).

ответ

0

Aha! Вам нужно «заглянуть в стек» при сравнении рангов самого верхнего уровня .. потому что «верх» должен выбить элемент.

Попробуйте stack.peek() или эквивалент. Какую библиотеку класса & вы используете для стека? s[top] Недопустимый синтаксис.

Назад в ответ # 1, я начал писать функцию peekRank() для вас, думая, что возникла проблема с проверкой, когда стек был пуст .. но остановился, когда увидел, что у вас есть пустая проверка.

Похоже, что вы не выглядели правильно, сверху.


[Ранее # 2 - Не вопрос]

Рассматривали ли вы) обращение? Ваш (код кажется, имеет ограждение на стек-пустому на нем.

[Ранее # 1-- Не совсем вопрос]

Помещенного «ВСЕГО выражение» псевдо-маркер на стеке в течение всего срока

+0

Я думаю, что я правильно нажимаю (и) и работает, даже если там есть нет заключенных круглых скобок. У меня с трудом возникает реализация вершины стека. (Программа предполагает, что пользователь правильно вводит выражение, т. е. соответствующие метки). –