2012-01-10 83 views
16

我有这样的代码:休息和标签 “标签MyLabel缺少”

if(condition1) 
{ 
    break MyLabel; 
} 
while(true) 
{ 
    //some code here 
    MyLabel: if(condition2) break; 
    //more code here 
} 

,我得到这个错误:

The label MyLabel is missing.

有什么不对?

回答

47

您只能打破文字包含语句的标签。在您的示例中,标签不在包含break声明的声明中。 (对于什么值得支持goto的更高级的语言不允许你从外部跳到循环的中间,我在考虑C ...以及像FORTRAN这样的老语言。)

Java允许你打出来,但打破是非法的......,将让你:-)

被捕(对不起,我无法抗拒它。对于那些谁不得到的笑话,一个“突破”是当有人进入你的房子偷东西 - 见"break and enter" ...)

+8

我喜欢看到这个词_arrested_一个关于标签的话题。恕我直言,良好的标签使用案例非常罕见。 – 2012-01-10 11:19:16

+0

感谢您的帮助;) – Lrrr 2012-01-10 13:21:18

+10

也谢谢你的笑话:D – Lrrr 2012-01-10 13:21:46

8

不能使用标签作为转到一般的方式。
如果您想要更高级别的嵌套代码,请使用标签。

例如

l1: while 
l2: while 
    l3: while 
    break l1 
    l4: while 
+0

但请注意,标签是Java中的标识符,而不是数字。 – 2014-03-04 06:18:16

+0

他可以使用标签作为转到,但他不能;) – tviana 2015-01-16 19:19:17