给循环命名

Gia*_*nis 15 java loops

在这个论坛中浏览问题和答案的过程中,我发现一段代码的名字被赋予了循环,以便将它们用于休息.喜欢

nameofloop:
    for(){
        for(){
             if(){ break nameofloop;}
        }
    }
Run Code Online (Sandbox Code Playgroud)

我是编程的新手,之前我还没有看到过.我的问题是命名循环的其他用途是什么?

Dav*_*eto 8

这不是标记的循环,只是您放置在任何位置的标签,然后您可以根据您的条件"中断"或"继续".你也可以在嵌套的if-else中使用for循环来破坏用if-else修饰的几个循环,这样你就可以避免设置很多标志并在if-else中测试它们以便继续或不在这个嵌套中水平.

不鼓励使用它,因为它类似于goto并导致意大利面条代码.

我个人以前只使用过一次,为了在其他两个for循环中使用if-else打破一个for循环并继续在外循环中,因为break循环内部打破了这个循环,但你继续在外循环中,而不是最外在的是我的情况.

  • 你不能把它*放在任何地方*,只能在语句之前(它只对那些包含其他嵌套语句的语句有用).(并且`继续标签;`只有当它实际上是一个被标记的循环时才可能.) (8认同)

Sea*_*ean 6

你也可以说:

continue nameofloop;
Run Code Online (Sandbox Code Playgroud)

...跳转到命名循环的开始.我不认为Java中的标签有任何其他用例.


T.K*_*.K. 5

正式地,我相信这被称为“标记中断”。这对于打破嵌套循环很有用,例如:

found:
    for (int i = 0; i < 100; i++)
        for (int j = 0; j < 100; i++)
            if ( /* Some condition is met */)
                break found;
Run Code Online (Sandbox Code Playgroud)

我不认为它对其他任何东西都有用。


Rya*_*and 5

这称为标记中断,是分支语句的一种形式。您可以在“ 官方文档”中查看所有示例。