我有一个类似于下面给出的for循环。
for(int i=0; i<10; i++)
{
boolean condition = checkCondition(); /* line 3 */
if(condition)
{
if(some other condition A)
{
move to line 3;
}
else if(some other condition B)
{
call_method_B();
}
else
{
call_method_C();
}
}
else
{
call_method_D();
}
}
如何使程序返回上述if语句中的第3行?我不想打破迭代。需要处于相同的迭代中,只需要回到第3行。
答案 0 :(得分:2)
在同一次迭代中,只需在调用continue之前减去i。 请注意,如果条件永远不会改变,这将使您进入无限循环。
for(int i=0; i<10; i++)
{
boolean condition = checkCondition(); /* line 3 */
if(condition)
{
if(some other condition A)
{
move to line 3;
i--; //this will cancel out the i++ in the for loop
continue; //this will bring you back to line 3
}
... the rest of your codes
答案 1 :(得分:2)
我不想打破迭代。需要处于相同的迭代中,只需要回到第3行。
我认为你需要一个while循环。然后,您可以更好地控制迭代时间。当你得到条件A检查时,c.moveToPosition()
不会改变,循环重复,否则你可以说i
。
i++
答案 2 :(得分:1)
我相信您的问题似乎需要一种递归方法而不是迭代方法。
上述问题可以通过以下方式使用递归方法解决:
public void checkRecursive()
{
boolean condition = checkCondition();
if (base_condition_to_avoid_recursion)
return;
if (condition)
{
if (some other condition A)
{
checkRecursive();
}
else if (some other condition B)
{
call_method_B();
}
else
{
call_method_C();
}
}
else
{
call_method_D();
}
}
答案 3 :(得分:0)
private static void run() {
for (int i = 0; i < 10; i++) {
boolean condition = checkCondition(); /* line 3 */
if (condition) {
if (some other condition A)
{
// move to line 3
// restart the method from beginning
run();
// break out of loop
break;
} else if (some other condition B){
call_method_B();
} else{
call_method_C();
}
} else {
call_method_D();
}
}
}