如果我像下面的代码一样使用break,那么如果开头有匹配,那么row中的循环将不会迭代其余的内容,但是col循环呢?
它还会在0到7之间迭代吗?有没有办法在那里也使用break?
for (int col = 0; col < 8; col ++)
for (int row = 0; row < 8; row ++)
if (check something)
{
//Then do this;
break;
}发布于 2013-05-27 17:13:04
一种选择是使用条件标志。然后,您也可以在外部循环中中断,或者只是将其用作for循环中的一个额外条件:
bool keepGoing = true;
for (int col = 0; col < 8 && keepGoing; col++)
{
for (int row = 0; row < 8 && keepGoing; row++)
{
if (something)
{
// Do whatever
keepGoing = false;
}
}
}在Java中,您可以指定要中断到的标签。(我没有看到这个问题被标记为Java和C#。)
outerLoop:
for (...)
{
for (...)
{
if (...)
{
break outerLoop;
}
}
}编辑:如注释中所述,在C#中,您可以使用标签和goto
for (...)
{
for (...)
{
if (...)
{
goto endOfLoop;
}
}
}
endOfLoop:
// Other code我真的建议你不要采用这两种方法中的任何一种。
在这两种语言中,通常最好的方法是将两个循环都转换为一个方法-然后您就可以从该方法返回:
public void doSomethingToFirstOccurrence()
{
for (...)
{
for (...)
{
if (...)
{
return;
}
}
}
}发布于 2013-05-27 17:13:49
可以,可以使用break标签:
package others;
public class A {
public static void main(String[] args) {
outer: for(int col = 0; col < 8; col ++)
{
for (int row = 0; row < 8; row ++)
{
if (col == 4)
{
System.out.println("hi");
break outer;
}
}
}
}
}发布于 2013-05-27 17:13:01
您可以这样放入逻辑:
boolean condition = false;
for (int col = 0; col < 8; col ++)
for (int row = 0; row < 8; row ++)
if (check something) {
// Then do this:
condition = true; // Break condition for outer loop
break;
}
}
if (condition)
break;
}https://stackoverflow.com/questions/16769838
复制相似问题