如此喜欢:
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
中。如果您不这样做,或者其他一些数据更合适,最好也更改此问题。