2009-12-21 167 views

回答

4
public static void main(String[] args) 
    { 
    hello: break hello; 
    } 
14

Here是使用標籤和break語句沒有環的一個例子:

 block1: { 
      if (a < 0) { 
       break block1; 
      } 
      if (b < 0) { 
       break block1; 
      } 
      return a + b; 
     } 
+4

w00t,學到了一些新的Java。 – akuhn 2009-12-21 14:38:28

+0

如何使用LABEL而不在定義的LABEL中。就像if(i == 0){ continue label1; }其他{// 做一些 } LABEL1:{// 做一些 } – DragonBorn 2009-12-21 15:07:29

+0

我不認爲這是可能的。它實際上是一個僞裝的goto,這在Java中是不允許的。 – kgiannakakis 2009-12-21 15:49:37

0

如果你想要一些不可讀代碼:

int i = 1; 
int j = 1; 
label: switch (i) { 
case 1: 
    switch (j) { 
    case 1: 
     break label; 
    } 
default: 
    System.out.println("end"); 
} 

沒有break;將打印 「結束」。 break label;將跳過打印。

2

肯定:

private boolean isSafe(String data) { 

    validation: { 

     if (data.contains("voldemort")) { 
      break validation; 
     } 
     if (data.contains("avada")) { 
      break validation; 
     } 
     if (data.contains("kedavra")) { 
      break validation; 
     } 
     return true; 
    } 
    return false; 
} 

@DragonBorn:這是不可能的。你只能繼續或它的範圍內打破了標籤,例如:

label1: for (int i = 0; i < 4; i++) { 
     for (int j = 0; j < 4; j++) { 
      System.out.println(i + " " + j); 
      if (i == j) { 
       continue label1; 
      } 
     } 
    } 

生產:

0 0 
1 0 
1 1 
2 0 
2 1 
2 2 
3 0 
3 1 
3 2 
3 3 
+0

如何使用LABEL而不在定義的LABEL中。就像if(i == 0){ continue label1; }其他{// 做一些 } LABEL1:{// 做一些 } – DragonBorn 2009-12-21 15:09:13

5

但是,爲什麼一個代碼塊上使用標籤?

我的應用程序通常是一個字符串變量(或除char,byte,short,int,Enum之外的任何其他類型)的開關。

「攤雞蛋,你必須打破一些雞蛋」

例子:

String key = "scrambled"; 
eggs: { 
    if ("do-nothing".equals(key)) break eggs; 
    if ("scrambled".equals(key)) { 
     ;//scramble code here 
     break eggs; 
    } 
    if ("fried".equals(key)) { 
     ;//fry code here 
     break eggs; 
    } 
    //default behaviour goes here 
    //or maybe throw an exception 
} 

好吧,好吧,「有時候,攤雞蛋,你要殺幾個人「

替代選項:

  • Java 7允許String作爲開關。
  • 使用 的Enum解決方法MyEnum.valueOf(str)可以工作。
  • 的字符串(或 對象)交換機的哈希碼加上一些if-then-else if是可能的,但 只會使意義很多的可能性,在這種情況下 整個事情很可能是由於該大修了。
+2

+1 * 「打破雞蛋;」 *':)' – ADTC 2014-08-05 04:50:33

相關問題