如何确保if语句中的指令(也在for循环中)只执行一次?

时间:2017-07-26 11:26:49

标签: java

让我说我有这个:

for(int i = 0; i < pointsArray.size(); i++) {
     ...
     some setup stuff
     ...
     if(pointOnMinimap()) {
         click(pointsArray.get(i);
     }
 }

每当它运行时,它会多次点击小地图上的点,直到出现pointsArray中的下一个点。对于每个点,如何确保click()运行一次?

编辑1 正如GhostCat所说,我添加了点击功能,也许这可能是问题。

public void click(int x, int y) {
    game.getCanvas().dispatchEvent(new MouseEvent(game.getCanvas(),
            MouseEvent.MOUSE_PRESSED,
            System.currentTimeMillis(),
            0,
            x, y,
            0,
            false));
    game.getCanvas().dispatchEvent(new MouseEvent(game.getCanvas(),
            MouseEvent.MOUSE_RELEASED,
            System.currentTimeMillis(),
            0,
            x, y,
            0,
            false));
    game.getCanvas().dispatchEvent(new MouseEvent(game.getCanvas(),
            MouseEvent.MOUSE_CLICKED,
            System.currentTimeMillis(),
            0,
            x, y,
            0,
            false));
}

4 个答案:

答案 0 :(得分:2)

的内容
for (int i = 0, j = 0; i < pointsArray.size(); i++) {    
    if (j == 0 && pointOnMinimap()){
         j = 1;
         click(pointsArray.get(i);
     }

会做到的。这是惯用的优雅C,但在Java中它实际上是滥用int类型。乳蛋饼食用者和女孩可能希望将j定义为boolean类型,但您需要在for循环上需要额外的作用域。

答案 1 :(得分:0)

我认为有一些条件,当为true时会引导你调用pointsOnMiniMap函数

for(int i = 0; i < pointsArray.size(); i++) {
     ...
     some setup stuff
     ...
     if(SOME_CONDITION && pointOnMinimap()) {
         click(pointsArray.get(i);
     }
 } 

答案 2 :(得分:0)

如果您提供一些示例数据会更好。我认为click(pointsArray.get(i);每次调度if(pointOnMinimap())都会返回true;

尝试检查这种情况,如

如果(!pointOnMinimap())    继续; 其他    单击(pointsArray.get(ⅰ);

答案 3 :(得分:0)

我做了GhostCat和RealSkeptic所说的,再次从头开始写这个部分,发现JButton动作监听器是导致鼠标点击循环的部分。谢谢大家的帮助:D