我遇到功能检查碰撞的问题。无论我做什么,它都会抛出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; }
}
这是完整的代码:
答案 0 :(得分: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;
答案 1 :(得分: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()而没有验证它是否还有下一个值。