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

时间:2014-02-01 01:38:09

标签: function variables loops if-statement while-loop

所以喜欢:

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,这是否能够停止while循环?

你怎么能完成同样的事情?

我对编程很缺乏经验。

FIXED:

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;
}

4 个答案:

答案 0 :(得分:0)

而不是

aFunction(x);

只需使用

i = aFunction(x);

答案 1 :(得分:0)

使用return来终止方法。

使用break来终止for / while循环或在switch语句中。

答案 2 :(得分:0)

    void aLoop(){
     int i = 0;

    do{
       aFunction();
       System.out.print(i+" ");
        i++;
    }while(i < 10);
    }

答案 3 :(得分:0)

“FIXED”下的建议解决方案可行,但如果您使用此方法编写大型程序,则最终会使用非常复杂且成本高昂的软件。这是因为aFunction依赖于调用它的函数aLoop。理想情况下,函数应该彼此独立,而aFunction仅在从while循环调用时才有效。您几乎从不希望被调用的函数依赖于调用它的函数的结构。

尝试编码,以便明确程序的每个部分的职责或“意图”,以便任何依赖关系都是最小和明显的。例如。在这里你可以写

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。如果不这样做,或者其他一些数据更合适,那么最好也改变它。