我正在清理一个应该能够用更易读的替代方案替换所有 goto语句的程序。我在循环中遇到了这种问题。这是代码。
for (int i = 0; i < 100; i++)
{
labelReturn:
//Some Code
for (int j = 0; j < 20; j++)
{
y = i * x + j
if (y == 5)
{
i++;
goto labelReturn;
}
}
//If Statement{}
//Some Code
}
如果我用break替换i++;
goto labelReturn;
。它只是打破当前的for循环,它将执行下一个“If”语句。有没有办法可以打破循环并继续迭代而不执行下一个代码/语句。
答案 0 :(得分:1)
只需创建一些标志,指示 inner 循环中的条件是否满足,如果是,则跳过该内循环后的代码:
for (int i = 0; i < 100; i++)
{
bool found = false;
//Some Code
for (int j = 0; j < 20; j++)
{
y = i * x + j
if (y == 5)
{
i++;
found = true;
break;
}
}
if(found) // do something
}
答案 1 :(得分:1)
您可以在内循环调用continue
之后调用break
:
for (int i = 0; i < 100; i++)
{
//Some Code
for (int j = 0; j < 20; j++)
{
y = i * x + j
if (y == 5)
{
break;
}
}
if (y == 5)
continue;
//If Statement{}
//Some Code
}
答案 2 :(得分:0)
或者
for (int i = 0; i < 100; i++)
{
//Some Code
int j;
for (j = 0; j < 5; j++)
{
// if (something) break;
}
if( j < 5) // do something
}