是否有方法仅在for循环的第一个循环中检查条件,并在其余循环中执行一些代码,如果条件被评估为真?我有一个for循环和其中的两个基本条件,它们只需要在第一个循环中检查。如果它们中的任何一个为真,则在所有其他周期中执行一段或另一段代码。除了第一个,我不能在其他循环中检查这些条件,因为这两个条件都为真,这不是我需要的(
) public void someMethod() {
int index;
for (int j = 0; j < 10; j++) {
if (j == 0 && cond1 == true && cond2 == true) {
methodXForTheFirstCycle();// this method will change cond2
methodXForTheRestCycles();// not the right place to put it
} else if (j == 0 && cond1 == true) {// and cond2 == false
methodYForTheFirstCycle();// this method will change cond2
methodYForTheRestCycles();// not the right place to put it
}
}
}
我建议你稍微展开你的循环。
if (cond1)
// j == 0
if (cond2)
methodXForTheFirstCycle();
else
methodYForTheFirstCycle();
cond2 = !cond2;
for (int j = 1; j < 10; j++) {
if (cond2)
methodXForTheRestCycle();
else
methodYForTheRestCycle();
cond2 = !cond2;
}
}
我有点困惑,因为你的代码什么也不做,如果j!=0
-那么为什么要循环?
我将把循环分开。拉出i==0
,它调用第一个方法,然后循环i=1 .. 9
这就是我认为你的描述的意思:
public void someMethod() {
int index;
if (cond1) {
if (cond2) {
methodXForTheFirstCycle();
for (int j = 1; j < 10; j++) {
methodXForTheRestCycles();
}
} else {
methodYForTheFirstCycle();
for (int j = 1; j < 10; j++) {
methodYForTheRestCycles();
}
}
}
}
如果我正确理解了您想要的内容,您可以做的是检查一次这两个条件,如果失败则中断。如果它们成功了,将标志设置为true,这样它就会绕过后续迭代中的检查。
尝试使用一个新的标志(boolean),也没有必要将boolean与true进行比较,如下所示:
public void someMethod() {
int index;
boolean firstConditionSuccess = false;
for (int j = 0; j < 10; j++) {
if (j == 0 && cond1 && cond2) {
methodXForTheFirstCycle();
firstConditionSuccess = true;
} else if (j == 0 && cond1) {// and cond2 == false
methodYForTheFirstCycle();
firstConditionSuccess = true;
}
if(firstConditionSuccess ){
methodYForTheRestCycles();
}
}
}