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

Java 如何确保if语句中的指令(也在for循环中)只执行一次?,java,Java,假设我有这个: for(int i=0;i

假设我有这个:

for(int i=0;i
无论何时运行,它都会在小地图上多次单击该点,直到下一个点出现。如何确保click()为每个点运行一次

编辑1正如GhostCat提到的,我添加了单击功能,也许这就是问题所在

public void单击(int x,int y){
game.getCanvas().dispatchEvent(新的MouseEvent(game.getCanvas(),新的MouseEvent),
MouseEvent.MOUSE_按下,
System.currentTimeMillis(),
0,
x、 y,,
0,
假),;
game.getCanvas().dispatchEvent(新的MouseEvent(game.getCanvas(),新的MouseEvent),
MouseEvent.MOUSE_发布,
System.currentTimeMillis(),
0,
x、 y,,
0,
假),;
game.getCanvas().dispatchEvent(新的MouseEvent(game.getCanvas(),新的MouseEvent),
MouseEvent.MOUSE_单击,
System.currentTimeMillis(),
0,
x、 y,,
0,
假),;
}

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

可以。这是惯用的优雅C,但可惜的是,在Java中它确实滥用了
int
类型。吃蛋饼的人和女孩可能希望
j
定义为
boolean
类型,但是你需要在
上为
循环添加额外的作用域块。

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

可以。这是惯用的优雅C,但可惜在Java中它确实滥用了
int
类型。吃蛋饼的人和女孩可能希望
j
被定义为
布尔
类型,但是你需要在
上为
循环增加额外的作用域块。

我认为有一些条件,如果为真的话,会导致你调用
pointsOnMiniMap
函数

for(int i = 0; i < pointsArray.size(); i++) {
     ...
     some setup stuff
     ...
     if(SOME_CONDITION && pointOnMinimap()) {
         click(pointsArray.get(i);
     }
 } 
for(int i=0;i
我认为存在一些条件,如果为true,则会导致调用
pointsOnMiniMap
函数

for(int i = 0; i < pointsArray.size(); i++) {
     ...
     some setup stuff
     ...
     if(SOME_CONDITION && pointOnMinimap()) {
         click(pointsArray.get(i);
     }
 } 
for(int i=0;i
如果您提供一些示例数据会更好。我认为
单击(pointsArray.get(I);
将在每次您设置
条件时被调用,如果(pointOnMinimap())
返回true

试着像这样检查这种情况

如果(!pointOnMinimap()) 继续; 其他的
click(pointsArray.get(i);

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

试着像这样检查这种情况

如果(!pointOnMinimap()) 继续; 其他的
单击(点)ray.get(i)

我按照GhostCat和Real怀疑论者所说的做了,从头再写了这部分,发现JButton动作监听器是导致鼠标点击循环的原因。感谢大家的帮助:D

我按照GhostCat和Real怀疑论者所说的做了,从头再写了这部分,发现JButton动作监听器是错误的导致鼠标点击循环的那个。感谢大家的帮助:D

你是否尝试使用布尔值检查它是否被点击?还有,如果在循环中,为什么会有布尔值?这不应该是在某些事件驱动函数中吗?而且,我怀疑你在
点击(pointsArray.get(I)时错过了一个
尝试在
单击
方法后添加
中断
语句。你是说一次,还是每次迭代一次?除非有另一个循环,否则每次迭代只执行一次。也许我是瞎子,但我不明白你的意思。你显示的代码会单击每个点0或1次。因此请包含该部分你的代码会导致多次单击!从这个意义上说:请阅读!啊哈。因此,你可能会有无限多的事件在进行-你发送的事件会导致你的事件侦听器再次被激活。请将你的程序重写为,否则很难帮到你。你是否尝试使用布尔值来检查它是否被单击?还有,你为什么要这样做如果在一个循环中,这是否应该在某个事件驱动函数中?并且,我怀疑您在
单击(pointsArray.get(I)时错过了一个
尝试在
单击
方法后添加
中断
语句。你是说一次,还是每次迭代一次?除非有另一个循环,否则每次迭代只执行一次。也许我是瞎子,但我不明白你的意思。你显示的代码会单击每个点0或1次。因此请包含该部分你的代码会导致多次点击!从这个意义上说:请阅读!啊哈。所以你可能有无限多的事件在发生-你发送的事件会导致你的事件监听器再次被激活。请将你的程序重写为a,否则很难帮到你。是的,我有一个功能,可以检查该点是否在小地图上可见或不工作。不工作。是的,我有一个函数可以检查点在小地图上是否可见。不工作。我尝试了if(!pointOnMinimap())continue;否则单击(pointsArray.get(I)。同样的。我尝试了if(!pointOnMinimap())continue(