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)


私の問題は、ランク(スタックのトップ)を実装することです。

4

1 に答える 1

0

あはは!最上位のランクを比較するときは、「スタックピーク」が必要です..「トップ」は要素をポップオフする必要があるためです。

stack.peek() または同等のものを試してください。スタックに実際に使用しているクラスとライブラリは何ですか? s[top]は有効な構文ではありません。

peekRank()回答 #1 に戻って、スタックが空のときのチェックに問題があると考えて、関数を書き始めました..しかし、空のチェックがあるのを見て停止しました。

ただし、トップを正しく peek() していないようです。


[以前の #2 -- 問題ではない]

)の取り扱いは考えましたか?あなたの ( コードには、スタックが空になるためのガードがあるようです。

[以前の # 1 -- 厳密には問題ではない]

'ENTIRE EXPRESSION' 疑似トークンを処理の全期間にわたってスタックに置くことで、スタックが空でないか、周囲の式/囲みトークンがないにもかかわらずランクに答えます。

于 2013-07-14T06:41:01.477 に答える