2012-01-10 121 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