2014-12-24 82 views
0

我在Java代碼中休息的標籤,但它不跳轉到標籤,當我去到break語句在我的代碼:的java中斷循環不工作

OUTERMOST:for(String s :soso){ 

     if(wasBreaked){ 
       //code never enters this loop 
       Log.e("","WASBREAK = FALSE"); 
       wasBreaked = false; 
     } 

     if(true){ 
       Log.e("","WASBREAK = TRUE GOING TO OUTERMOST"); 
       wasBreaked = true; 
       break OUTERMOST; 
     } 
    } 
+1

這是行不通的,因爲打破'OUTERMOST;'沒有**不**意味着'跳轉到OUTERMOST'。它意味着_break循環有label_'OUTERMOST' – BackSlash

+2

它不應該跳轉到標籤。 'break'不是'goto'(Java中沒有'goto')。 – RealSkeptic

+0

看看http://stackoverflow.com/questions/389741/continue-keyword-in-java – newuser

回答

0

break語句不是一個真正的goto語句與其他編程語言(如C)一樣。

您的代碼的作用是從具有標籤OUTERMOST的循環中斷開。我原以爲你需要continue OUTERMOST;而不是休息。但對我來說,這確實沒有意義,因爲你沒有進一步發表任何聲明帖子繼續(現在破壞你的代碼),並且無論你是否明確地繼續或繼續,它都會繼續。

+0

只是用繼續取代休息做的工作 –

0
public class Test { 

    public static void main(String[] args) { 

    String soso[]={"1","2"}; 
    boolean wasBreaked=false; 
    OUTERMOST:for(String s :soso){ 

     if(wasBreaked){ 
       Log.e("","WASBREAK = FALSE"); 
       wasBreaked = false; 
     } 

     if(true){ 
       Log.e("","WASBREAK = TRUE GOING TO OUTERMOST"); 
       wasBreaked = true; 
       System.out.println("before break"); 

       break OUTERMOST;//use continue in place of break here for going to label 
       } 
     System.out.println("Inside outermost loop"); 
} 
    System.out.println("outside outermost loop"); 

} 

} 

我想這和它的作品 它給輸出

before break 
    outside outermost loop 

爲了要回標籤,你應該使用繼續關鍵字,而不是突破代碼。使用後繼續輸出將如

before break 
before break 
outside outermost loop