所以喜欢:
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;
}
答案 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
。如果不这样做,或者其他一些数据更合适,那么最好也改变它。