[英]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.