我正在實現一個minstack算法并且遇到了一些奇怪的事情,也許我在這里缺少“某些堆棧概念”或“某些 Java 概念”。我正在使用兩個堆棧(st 和 st2)來執行我的 minstack 操作。下面是我在 if 條件下失敗的 pop 方法:方法 1 - 失敗:public void pop() { if(st.pop() == st2.peek()) st2.pop(); }下面是當我將 st.pop() 結果存儲在變量“a”中時工作正常的 Pop 方法:方法 2 - 通過:public void pop() { int a = st.pop(); if(a == st2.peek()) st2.pop();}請假設堆棧中都有整數元素,并且值 fromst.pop()等于st2.peek()。我想了解為什么在st.pop()方法 1 的 if 狀態下不起作用而在將結果存儲st.pop()到臨時變量后在方法 2 中起作用的區別a
1 回答

元芳怎么了
TA貢獻1798條經驗 獲得超7個贊
如果我對問題的理解正確,st.pop()
則在第一種方法中不起作用,因為 st 中的元素類型從未明確說明(即 st 可以像 一樣初始化Stack st = new Stack();
)。
結果,任何對象(不一定是 int)都可以被壓入堆棧,因此當堆棧被彈出時,不清楚返回的是什么數據類型,從而導致 if 語句失敗。
在第二種方法中,彈出的項目在變量 a 中顯式定義為 int,因此當與 a 進行比較時,if 語句按預期工作。
添加回答
舉報
0/150
提交
取消