如何使用循环中调用的函数的if语句退出循环(循环)



如此喜欢:

void aLoop(){
   int i = 0;
   while(i < 10){
      aFunction();
      i++;
   }
}
int aFunction(int i){
   if(aVariable == 1){
      i = 10;
   }
   if(aVariable != 1){
      statement;
      statement;
      i = i;
   }
   return i;
}

在每个i(0,1,2,3,...,9)中调用afunction(),每个呼叫都将满足第一个if语句或第二个呼叫。

假设所有功能和变量都已声明,如果avariable == 1?

您还能完成同一件事吗?

我真的没有编程。

修复:

void aLoop(){
   int i = 0;
   while(i < 10){
      i = aFunction(i);
      i++;
   }
}
int aFunction(int i){
   if(aVariable == 1){
      i = 10;
   }
   if(aVariable != 1){
      statement;
      statement;
      i = i;
   }
   return i;
}

而不是

aFunction(x);

只使用

i = aFunction(x);

使用返回以终止方法。

使用Break终止循环或开关语句中的A终止A。

    void aLoop(){
     int i = 0;
    do{
       aFunction();
       System.out.print(i+" ");
        i++;
    }while(i < 10);
    }

"固定"下的建议解决方案将起作用,但是如果您使用这种方法编写了一个大型程序,最终您会使用软件非常复杂且非常昂贵。这是因为aFunction取决于调用它的函数aLoop。理想情况下,函数应彼此独立,而aFunction仅在从段循环中调用的情况下才起作用。您几乎永远不希望称为函数取决于调用它的函数的结构。

尝试编码,以使程序的每个部分的职责或"意图"都很清楚,因此任何依赖项都是最小且明显的。例如。在这里您可以写

void aLoop(){
   bool continueProcessing = true;
   for(int i=0;
       continueProcessing && i < 10;
       i++) {
       continueProcessing  = aFunction(i);
   }
}
int aFunction(int i){
    bool stillProcessing = aVariable != 1;
    if (stillProcessing) {
        statement;
        statement;
    }
    return stillProcessing;
}

当然,在aLoop中,还有其他一些选择等于同一件事。您可以使用while循环进行(我认为for更清晰)。另外,您可以从循环中 break出来,而不是拥有额外的continueProcessing变量。

void aLoop(){
   for(int i=0; i < 10; i++) {
      if (!aFunction(i))
          break;
   }
}

最后,我不确定您甚至不需要将变量i传递到aLoop中。如果您不这样做,或者其他一些数据更合适,最好也更改此问题。

最新更新