2011-09-27 55 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

相关问题