在循环中正确使用标签

时间:2013-02-07 17:36:24

标签: java

我在我的应用中寻找错误,它看起来就在这里:

for (int y=0; y<MAP_HEIGHT; y+=10) {
    for (int x=0; x<MAP_WIDTH; x+=10) {
        Label:

        for (GameResource res : resources) {
            //Checks if some object is already at given point
            if (res.getArea().contains(new Point2D.Float(x, y))) { 
                continue Label;
            }
        }

        if ((int)(Math.random()*200) == 0) {
            resources.add(new GameTree(x, y));
        }

        if ((int)(Math.random()*400) == 0) {
            resources.add(new GameMine(x, y));
        }
    }
}

它创建地图。我查了一下,看起来即使某个对象在给定的点上,尽管存在资源。我是否正确使用过标签?如果使用了point,我想在x-for循环中转到下一个iteraton。

2 个答案:

答案 0 :(得分:1)

如果你想进入x循环的下一次迭代,你的标签应该在x循环上:

Label: for (int x = 0; x < MAP_WIDTH; x += 10)

答案 1 :(得分:1)

你也可以不带任何标签:

    for (int y=0; y<MAP_HEIGHT; y+=10) {
        for (int x=0; x<MAP_WIDTH; x+=10) {

            if (noResourcesAtPoint(resources, x, y))
            {
                if ((int)(Math.random()*200) == 0) {
                    resources.add(new GameTree(x, y));
                }

                if ((int)(Math.random()*400) == 0) {
                    resources.add(new GameMine(x, y));
                }
            }
        }
    }       


private boolean noResourcesAtPoint(GameResources resources, int x, int y)
{
    for (GameResource res : resources)
    {
        if (res.getArea().contains(new Point2D.Float(x,y)))
        {
            return false;
        }
    }
    return true;
}