我想问一下如何在c ++中打破'for'循环,但仅限于一个特定值。例如
for (i = 0; i <= 3; i++)
{
for (z = 0; z <= 6; i++)
{
//extra code here...
}
}
现在我想打破for循环,如果z = 2
的值,但我想要打破i
的循环。
像这样:
i - &gt; 0
z - &gt; 0
z - &gt; 1
//打破两个循环
异&GT; 1
z - &gt; 0
.........
任何人都可以帮助我吗?
答案 0 :(得分:3)
您可以从众多变种中进行选择。
使用特殊标志变量:
bool success = false;
for (i = 0; i <= 3; i++)
{
for (z = 0; z <= 6; i++)
{
//extra code here...
success = true;
break;
}
if (success) {
break;
}
}
使用return语句(但您可能还需要适当地重写代码):
for (i = 0; i <= 3; i++)
{
for (z = 0; z <= 6; i++)
{
//extra code here...
return; //or return <something>;
}
}
使用throw
,但在我看来,这不是一个好习惯:
try {
for (i = 0; i <= 3; i++)
{
for (z = 0; z <= 6; i++)
{
//extra code here...
throw <something>
}
}
} catch (const excpttype& e) {
// ...
}
在循环中使用stop
- 条件:
bool breakFor = false;
for (i = 0; i <= 3 && !breakFor; i++)
{
for (z = 0; z <= 6; i++)
{
//extra code here...
breakFor = true;
break;
}
}
使用显式赋值来打破循环:
for (i = 0; i <= 3; i++)
{
for (z = 0; z <= 6; i++)
{
//extra code here...
i = 4;
break;
}
}
使用goto
声明:
for (i = 0; i <= 3; i++)
{
for (z = 0; z <= 6; i++)
{
//extra code here...
goto afterLoop;
}
}
afterLoop:
// code
我认为最好的做法是使用flag-variable或重构这个循环在一个单独的函数内。
答案 1 :(得分:2)
无需额外的变量。
for (i = 0; i <= 3; i++)
{
for (z = 0; z <= 6; z++)
{
//extra code here...
if (z == 2) {
i = 4;
break;
}
}
}
虽然以这种方式打破循环没有任何意义。可能你需要一些额外的条件。
答案 2 :(得分:1)
for (i = 0; i <= 3; i++)
{
for (z = 0; z <= 6; z++)
{
//extra code here...
if (specificValue)
{
break;
}
}
}
答案 3 :(得分:1)
boolean condition=false;
for (i = 0; i <= 3; i++)
{
for (z = 0; z <= 6; i++)
{
//extra code here...
if(z==2){
condition=true;
break;
}
}
if(condition){
break;
}
}
答案 4 :(得分:0)
for循环中间的条件只是一个正常条件,因此您可以检查的不仅仅是整数的值。即。
var breakTheLoop = false;
for (i = 0; i <= 3 && !breakTheLoop; i++)
{
for (z = 0; z <= 6 && !breakTheLoop; z++)
{
//extra code here...
if (specificValue)
{
breakTheLoop = true;
break;
}
}
}
答案 5 :(得分:0)
我认为答案很简单:只需设置一个if语句并在值为2(或某个值...)时呼吸。
例如:
<强> CODE 强>
for (i = 0; i <= 3; i++)
{
for (z = 0; z <= 6; i++)
{
if(z == 2)
break;
}
}
我希望这能解决你的问题!如果不只是写评论并告诉我你的错误。然后我会尝试为你编写一些代码示例!祝你有愉快的一天!
答案 6 :(得分:0)
您忘记在第二个循环中增加z
,它会一直“永远”运行。
这是一种方法:
bool break_loop = 0;
for (int i = 0; i <= 3 && !break_loop; ++i)
{
for (int z = 0; z <= 6 && !break_loop; ++z)
{
//extra code here...
if (z == 2)
break_loop = 1;
}
}
或者你可以在两个循环中执行if语句,然后在break
执行我喜欢的语句。
bool break_loop = 0;
for (int i = 0; i <= 3; ++i)
{
for (int z = 0; z <= 6; ++z)
{
//extra code here...
if (z == 2)
break_loop = 1;
}
if (break_loop)
break;
}