2013-04-25 35 views
0

這個問題是關於Android/AndEngine的,但一般涉及到Java。對於不適用於每個數組元素的語句?

我有一個for循環用於附加數組中的處理矩形。這是我的代碼。

try { 
     if ((NPCrectangle.size() > 0) && (NPCbody.size() > 0)) { 
      System.out.println("NPCrectangle size is "+NPCrectangle.size()); 
      for (int i = 0; i < NPCrectangle.size(); i++) { 
       System.out.println("For loop ran for NPCrectangle "+i); 
       for (int j = 0; j < NPCbody.size(); j++) { 
        NPCrectangle.get(i).setX(NPCbody.get(j).getPosition().x*32); 
        attachChild(NPCrectangle.get(i)); 
        System.out.println("RECTANGLE ATTACHED FOR NPC"+i); 
       } 
      } 
     } 
    } catch (Exception e) { 
     // TODO: handle exception 
    } 

System.out.println("NPCrectangle size is "+NPCrectangle.size()); 
     for (int i = 0; i < NPCrectangle.size(); i++) { 
      System.out.println("For loop ran for NPCrectangle "+i); 

我得到 'NPCrectangle尺寸爲2',後來我只得到 '對於循環跑了NPCrectangle 0'。它從不對數組的第二個元素做任何事情。爲什麼是這樣?

這是我的陷阱:

04-25 18:45:45.420: W/System.err(2235): java.lang.IllegalStateException: pEntity 'Rectangle' already has a parent: 'GameScene'. New parent: 'GameScene'! 
04-25 18:45:45.420: W/System.err(2235):  at org.andengine.entity.Entity.assertEntityHasNoParent(Entity.java:1707) 
04-25 18:45:45.420: W/System.err(2235):  at org.andengine.entity.Entity.attachChild(Entity.java:907) 

當您嘗試連接同一精靈兩次這是一個錯誤。建議?

+3

我猜你在循環的第二次迭代之前拋出異常。在你的catch塊中放一個print語句來找出(或者使用一個調試器)。 – Aurand 2013-04-25 22:30:42

+0

如果.size()> 0,for循環不會循環,您可以刪除檢查 – 2013-04-25 22:31:16

+0

attachChild(NPCrectangle.get(i))的代碼是什麼? ? – drewich 2013-04-25 22:31:39

回答

2

這個循環

for (int j = 0; j < NPCbody.size(); j++) { 
        NPCrectangle.get(i).setX(NPCbody.get(j).getPosition().x*32); 
        attachChild(NPCrectangle.get(i)); 
        System.out.println("RECTANGLE ATTACHED FOR NPC"+i); 

運行了多次,這取決於NPCbody.size(),但將附加相同的矩形。 NPCrectangle.get(i),每次。因此,你通過內循環第二次得到錯誤。

+0

我嘗試這樣做:'用於(INT J = 0;Ĵ user2005938 2013-04-25 23:54:58

+2

上述答案仍然顯示問題。您正試圖連接兩次相同的實體。這會引發循環結束的錯誤,並進入catch塊,然後靜默失敗。如果你從try/catch塊中取出,你應該得到一個有意義的錯誤信息。 – 2013-04-26 16:59:42