Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 如何从循环中调用的函数中使用if语句退出循环(while循环)?_Function_Variables_Loops_If Statement_While Loop - Fatal编程技术网

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

Function 如何从循环中调用的函数中使用if语句退出循环(while循环)?,function,variables,loops,if-statement,while-loop,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; } void

就像:

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;
}
void aLoop(){
int i=0;
而(i<10){
函数();
i++;
}
}
int A函数(int i){
如果(变量==1){
i=10;
}
如果(变量!=1){
陈述
陈述
i=i;
}
返回i;
}
其中,将为每个i(0,1,2,3,…,9)调用函数(),并且每个调用将满足第一个if语句或第二个if语句

假设声明了所有函数和变量,如果aVariable==1,这是否能够停止while循环

否则你怎么能完成同样的事情呢

我对编程真的没有经验

固定的:

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;
}
void aLoop(){
int i=0;
而(i<10){
i=功能(i);
i++;
}
}
int A函数(int i){
如果(变量==1){
i=10;
}
如果(变量!=1){
陈述
陈述
i=i;
}
返回i;
}
而不是

aFunction(x);
只用

i = aFunction(x);

使用return终止方法

使用break终止for/while循环或switch语句

void aLoop(){
    void aLoop(){
     int i = 0;

    do{
       aFunction();
       System.out.print(i+" ");
        i++;
    }while(i < 10);
    }
int i=0; 做{ 函数(); 系统输出打印(i+“”); i++; }而(i<10); }
您在“修复”下建议的解决方案将起作用,但如果您使用这种方法编写大型程序,您最终将使用非常复杂且成本高昂的软件。这是因为函数依赖于调用它的函数
alop
。函数在理想情况下应该彼此独立,而
a函数只有在从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;
}

最后,我不确定您是否需要将变量
I
传递到
aLoop
。如果您不这样做,或者其他一些数据更合适,那么最好也更改它。

您没有提到您正在使用的语言。请使用所选语言的
break
return
语句。您可能也应该将i作为参数传递给函数。哈哈,当然,原始语言中缺少,回答中缺少:)我刚刚添加了它,thx GavinHThanks!在我的程序中,我有两个函数(I);i=函数(i)。我想它们是相互冲突的。是的,只需更改其中一个的名称。函数必须由代表性名称调用。函数不是一个很好的名字。。。试着用表示函数功能的名称来命名函数。如果你用我的答案修复了代码,请将其标记为解决方案。我正在编写的程序只会在该循环中使用function()(而i@user3259381好的,我仍然会尝试减少循环和它调用的函数之间的耦合。想象一下,被调用的函数从被调用方收到一条消息,并返回一条消息,说“再次调用我”或“不再调用我”.但我也同意你的观点,你在简化你的问题上做了一些努力,而且可能做得太好了,以至于我没有抓住问题的正确方向!
void aLoop(){
   for(int i=0; i < 10; i++) {
      if (!aFunction(i))
          break;
   }
}