Java 每个循环嵌套的NoTouchElementException

Java 每个循环嵌套的NoTouchElementException,java,for-loop,iterator,boolean,Java,For Loop,Iterator,Boolean,我在函数检查冲突方面有问题。无论我做什么,它都不会引起任何意外。这是: 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 >=

我在函数检查冲突方面有问题。无论我做什么,它都不会引起任何意外。这是:

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; }
}
public boolean isColliding(像素a){
如果((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)
){返回真;}否则{返回假;}
}
以下是完整的代码:

这里有一个问题(
Main.java
):

可以(并且应该)减少到:

return damnLongCondition;

您的错误可能来自以下方面:

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) { }
}
for(迭代器迭代器2=pixel.Iterator();迭代器2.hasNext();){
if(迭代器!=迭代器2){
字段(迭代器2.next());
试试{
if(px.isColliding(iterator2.next()){temporary++;}
}捕获(例外e){}
}

您正在循环中第二次调用iterator2.next(),但没有验证它是否还有下一个值。

为NoTouchElementException提供错误堆栈跟踪。
if(a){return true;}else{return false;}
可以简化为
返回a;
。堆栈跟踪在哪里?for each循环在哪里?在问题本身中发布相关代码,而不仅仅是链接。原因:显然,与最初引用的几行代码相比,更多的代码是相关的。好的,创建临时像素对象并分配迭代器2。接下来修复了此问题。感谢帮助。
return damnLongCondition;
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) { }
}