我有5个rectObj,但循环仅持续了两次。

这是我的代码:

public boolean bottomLeft() {
    boolean ret = false;
    Iterator<rectObj> rectItr = Main.rectAr.iterator();
    while (rectItr.hasNext() && ret == false) {
        rectObj e = rectItr.next();
        if (x > e.getX() && x < e.getX()+e.getWidth()
                && y+h > e.getY() && y+h < e.getX()+e.getHeight()) {
            ret = true;
        }else{
            if(rectItr.hasNext()) {
                rectItr.next();
            }
        }
    }
    return ret;
}

rectObj rect1 = new rectObj(250,250,50,50);
    rectObj rect2 = new rectObj(0,440,500,50);
    rectObj rect3 = new rectObj(0,0,500,50);
    rectObj rect4 = new rectObj(400,200,50,50);
    rectObj rect5 = new rectObj(0,200,50,50);

    rectAr.add(rect1);
    rectAr.add(rect2);
    rectAr.add(rect3);
    rectAr.add(rect4);
    rectAr.add(rect5);


我希望循环在整个数组中继续进行,除非找到与之碰撞的对象。

感谢您的任何答复!

最佳答案

您正在循环内的rectItr.next()部分中再次调用else。尝试删除if-else语句的else部分。

else部分正在检查rectItr.hasNext()是否存在,是否正在调用rectItr.next()。然后返回到while循环的顶部,再次执行相同的操作。因此,在每个循环中,如果if测试为false,则它将额外调用rectItr.next()时间,并跳过数组中的下一个元素。

09-10 19:55