我的 for 循环忽略了 !found 字段,即使找到 == true 也会继续执行:
public int getDownYEntities() {
int loc = 16;
boolean found = false;
EntityType eCheck;
for (int col = locY; col < 17 || !found; col++) {
eCheck = level[locX][col];
System.out.println("Called");
if ((eCheck == EntityType.ROCK) || (eCheck == EntityType.BOULDER) || (eCheck == EntityType.KEY) || (eCheck == EntityType.EXIT)) {
switch (eCheck) {
case ROCK:
loc = col - 2;
found = true;
break;
case BOULDER:
loc = col - 2;
found = true;
System.out.println("Test1");
System.out.println(found);
break;
case KEY:
loc = col - 2;
found = true;
break;
case EXIT:
loc = col - 1;
found = true;
break;
}
}
else
{
loc = col-1;
}
}
return loc;
}
日志:
I/System.out: Called
I/System.out: Called
I/System.out: Called
I/System.out: Called
I/System.out: Called
I/System.out: Called
I/System.out: Called
I/System.out: Test1
I/System.out: true
I/System.out: Called
I/System.out: Called
I/System.out: Called
I/System.out: Called
I/System.out: Called
I/System.out: Called
I/System.out: Called
I/System.out: Called
I/System.out: Called
I/System.out: Called
我是个彻头彻尾的白痴吗?
最佳答案
col < 17 && !found
你想要“和”,而不是“或”。
关于Java:for循环忽略条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35639630/