2011-09-27 7 views
0

これは深刻な混乱とイライラです。私は既にこの同じプログラムに関して1つの質問をしました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()); 
     } 
    } 

最初のスタックは、それがポップ最後の整数が同じであった場合に空である場合、またはループのいずれかすべき端ながらsBlockとして私が抱えている問題は、ブロック[rBlock] .empty()は、プログラムがブロック[rBlock]のポップアウトからクラッシュしても、スタックに何も存在しない場合でもtrueを返さないということです。誰かが私に何が起こっているか説明してもらえますか?

+0

ジェネリック、アンボックス、ブラケットを削除したり、コードを読みやすくするために 'break'を使うことはできません。 –

答えて

2

最初のループでは、1つのスタック(つまり、blocks[rBlock].empty())をテストしていて、別のスタック(つまりblocks[sBlock].pop())をポップしています。

+0

O_Oそれは恥ずかしそうなものです...... – RaysonK

関連する問題