0

関数チェックの衝突に問題があります。私が何をしても、NoSuchElementExceptionがスローされます。ここにあります:

public boolean isColliding(Pixel a) {
    if((a.x + a.size/2 <= x - size/2 &&
        a.x - a.size/2 >= x - size/2 ||
         a.x + a.size/2 <= x + size/2 &&
          a.x - a.size/2 >= x + size/2) &&
      (a.y + a.size/2 <= y - size/2 &&
        a.y - a.size/2 >= y - size/2 ||
         a.y + a.size/2 <= y + size/2 &&
          a.y - a.size/2 >= y + size/2) 
            ) { return true; } else { return false; }
}

コード全体は次のとおりです。

Main.java

Particle.java

ParticleHandler.java

Pixel.java

4

2 に答える 2

1

ここに問題があります(Main.java):

for(Iterator<Pixel> iterator2 = pixel.iterator(); iterator2.hasNext();){
    if( iterator != iterator2 ){
        licz.field(iterator2.next());
        try{ 
            if( px.isColliding(iterator2.next())) { temporary++; } 
        } catch(Exception e) { }
    }
}

iterator2.next()hasNext()チェックなしでループ内で呼び出されます。

またこれ:

if(damnLongCondition) { return true; } else { return false; }

次のように減らすことができます(そして減らす必要があります)。

return damnLongCondition;
于 2012-04-05T10:24:34.433 に答える
1

あなたのエラーはおそらくここから来ています:

for(Iterator<Pixel> iterator2 = pixel.iterator(); iterator2.hasNext();){
if( iterator != iterator2 ){
    licz.field(iterator2.next());
try{ 
        if( px.isColliding(iterator2.next())) { temporary++; } 
} catch(Exception e) { }
}

次の値がまだあることを確認せずに、ループ内で iterator2.next() をもう一度呼び出しています。

于 2012-04-05T10:25:02.017 に答える