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) { }
}