繁体   English   中英

如何确保if语句内的指令(也位于for循环内)仅执行一次?

[英]How do I make sure the instruction inside an if statement, which is also inside a for loop, gets executed only once?

假设我有这个:

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

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

编辑1正如GhostCat所述,我添加了click函数,也许这可能是问题所在。

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

一些东西

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循环上需要额外的作用域块。

我认为存在某些情况,当该条件为true时,将导致您调用pointsOnMiniMap函数

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

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

尝试检查这种情况,例如

if(!pointOnMinimap())继续; 否则单击(pointsArray.get(i);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM