美好的一天!我正在使用堆栈实现一个使用postix转换器的中缀。当用户输入没有括号的中缀表达式时,它可以工作;但是当存在括号时,控制台会说:
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 :(得分:0)
啊哈!比较最顶层的等级时你需要“堆栈偷看”因为“顶部”必须弹出元素。
尝试使用stack.peek()或等效文件。实际上是什么类和&你在使用库,用于堆栈吗? s[top]
是无效的语法。
回到答案#1,我开始为你写一个peekRank()
函数,认为检查堆栈空的时候有问题..但是当我看到你有空检查时停止了。
但是,看起来你并没有正确地偷看()。
[早期#2 - 不是问题]
您是否考虑过)处理?你的(代码似乎有一个堆栈空的守卫。
[早期#1--不完全是问题]
在整个处理过程中,在堆栈上放置一个'ENTIRE EXPRESSION'伪令牌,因此你有一个非空堆栈,或者尽管没有周围的表达式/封闭令牌,你也可以回答等级。