2011-09-27 52 views
0

這是令人非常困惑和令我沮喪的。我已經問過關於同一個程序here的一個問題。從代碼開始,我遇到了Stack的另一個問題。下面是一個方法,該方法是使用疊層的陣列,稱爲塊,從前面的帖子:堆棧沒有返回空,即使它沒有對象

static void pileOnto(int sBlock, int rBlock) 
    { 
     boolean flag = true; 
     while ((!blocks[rBlock].empty()) && (flag)) 
     { 
      retainer.push((Integer)blocks[sBlock].pop()); 
      if (((Integer)blocks[rBlock].peek()).intValue() == sBlock) {flag = false;} 
     } 
     while (((Integer)blocks[rBlock].peek()).intValue() != rBlock) 
     { 
      returnBlock(((Integer)blocks[rBlock].pop()).intValue()); 
     } 
    } 

第一while循環應該任一端時堆棧爲空時,或者當最後一個整數它彈出顯相同作爲sBlock。我遇到的問題是塊[rBlock] .empty()永遠不會返回true,即使程序崩潰試圖彈出塊[rBlock],也就是說棧中不能有任何東西。有人可以向我解釋發生了什麼事嗎?

+0

我假設你不能使用泛型,拆箱,刪除括號或'break'使代碼更具可讀性。 –

回答

2

在第一個循環中,您正在測試一個堆棧(即blocks[rBlock].empty())並彈出不同的堆棧(即blocks[sBlock].pop())。

+0

O_O ..... ......超越尷尬...... – RaysonK

相關問題