2013-07-14 87 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

啊哈!當比較排名最高的時候,你需要「堆棧偷看」,因爲「頂部」必須將元素彈出。

嘗試stack.peek()或等價物。你使用的是什麼類庫&,用於堆棧? s[top]是無效的語法。

回到第一個答案,我開始爲你寫一個peekRank()函數,認爲檢查堆棧是空的時候出現了一個問題,但是當我看到你有一個空的檢查時就停下來了。

雖然看起來你並沒有偷看正確的頂部。


[早些時候#2 - 不是問題]

您曾經考慮過)處理?你(代碼似乎對堆棧空保護就可以了。

[早些時候#1--不完全的問題]

加上一個「整個表達式」僞標記堆棧上的整個期間, ,所以你有一個非空的堆棧,或者儘管沒有周圍的表達式/封閉的令牌也應答一個排序。

+0

我認爲我推擠並彈出(和)正確,它即使有(沒有包含圓括號)我遇到困難的是實現棧頂(程序假定用戶正確輸入了一個表達式,即合適的封閉標記)。 –