仅在第一个周期检查条件,在其余周期中执行一些代码



是否有方法仅在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();
    }
 }
}

相关内容

  • 没有找到相关文章

最新更新