首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >可以使用break for outer循环吗?

可以使用break for outer循环吗?
EN

Stack Overflow用户
提问于 2013-05-27 17:10:48
回答 13查看 17.5K关注 0票数 34

如果我像下面的代码一样使用break,那么如果开头有匹配,那么row中的循环将不会迭代其余的内容,但是col循环呢?

它还会在0到7之间迭代吗?有没有办法在那里也使用break

代码语言:javascript
复制
for (int col = 0; col < 8; col ++)
    for (int row = 0; row < 8; row ++)
        if (check something)
        {
            //Then do this;
            break;
        }
EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2013-05-27 17:13:04

一种选择是使用条件标志。然后,您也可以在外部循环中中断,或者只是将其用作for循环中的一个额外条件:

代码语言:javascript
复制
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#。)

代码语言:javascript
复制
outerLoop:
for (...)
{
    for (...)
    {
        if (...)
        {
            break outerLoop;
        }
    }
}

编辑:如注释中所述,在C#中,您可以使用标签和goto

代码语言:javascript
复制
for (...)
{
    for (...)
    {
        if (...)
        {
            goto endOfLoop;
        }
    }
}
endOfLoop:
// Other code

我真的建议你不要采用这两种方法中的任何一种。

在这两种语言中,通常最好的方法是将两个循环都转换为一个方法-然后您就可以从该方法返回:

代码语言:javascript
复制
public void doSomethingToFirstOccurrence()
{
    for (...)
    {
        for (...)
        {
            if (...)
            {
                return;
            }
        }
    }
}
票数 89
EN

Stack Overflow用户

发布于 2013-05-27 17:13:49

可以,可以使用break标签:

代码语言:javascript
复制
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;
                }
            }
        }
    }
}
票数 15
EN

Stack Overflow用户

发布于 2013-05-27 17:13:01

您可以这样放入逻辑:

代码语言:javascript
复制
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;
 }
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16769838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档