问题 给循环命名


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

nameofloop:
    for(){
        for(){
             if(){ break nameofloop;}
        }
    }

我是编程的新手,我以前没见过。我的问题是命名循环的其他用途是什么?


3584
2018-03-29 21:08


起源



答案:


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

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

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


6
2018-03-29 21:30



你不能放置它 随地,仅在语句之前(并且它仅对其中包含其他嵌套语句的语句有用)。 (和 continue label; 只有当它实际上是一个被标记的循环时才有可能。) - Paŭlo Ebermann
是的,我试图说明使用方法。 - David Oliván Ubieto


答案:


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

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

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


6
2018-03-29 21:30



你不能放置它 随地,仅在语句之前(并且它仅对其中包含其他嵌套语句的语句有用)。 (和 continue label; 只有当它实际上是一个被标记的循环时才有可能。) - Paŭlo Ebermann
是的,我试图说明使用方法。 - David Oliván Ubieto


你也可以说:

continue nameofloop;

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


6
2018-03-29 21:14





它被称为带标签的断点,它是一种分支声明。你可以看到所有的例子 官方文件


4
2017-08-23 12:37





我认为这是唯一使用它的情况。并且它不是常用的东西,因为更改标志的值以过早地结束循环通常更具可读性。


1
2018-03-29 21:13





正式地说,我认为这被称为“标记的休息”。它对于打破嵌套循环非常有用,例如:

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

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


1
2018-03-29 21:14





  1. 创建一个数组(int)10号。

  2. 让用户分配值 - (使用for-loop)。

  3. 查找存储在数组中的值的总和和平均值 - (使用for循环)。


-4
2017-12-07 21:38



这是如何回答这个问题的? - Jeen Broekstra