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(