2013-04-25 83 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