2011-03-29 59 views
11

雖然在這個論壇上瀏覽問題和答案,我發現一段代碼名稱被給予循環,以便使用它們來休息。像給一個循環的名字

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

林新編程,我還沒有見過,之前。我的問題是還有什麼其他用途的命名循環?

回答

6

這不是一個標籤循環,只是一個標籤,你放置在任何地方,然後你可以「打破」或「繼續」取決於你的條件。你也可以在嵌套的if-else with循環中使用,以便打破用if-else裝飾的幾個循環,所以你可以避免設置很多標誌並在if-else中測試它們以便繼續或不在這個嵌套中水平。

它的使用不鼓勵類似goto並導致意大利麪代碼。

就我個人而言,我只使用過一次,以便在其他兩個for循環中使用if-else和continue在外循環中打開for循環,因爲循環內部的break會打破此循環,但您繼續外圈,而不是我的情況最外層。

+6

不能將它放在任何位置*,只能在語句之前(並且只對在其中具有其他嵌套語句的語句有用)。 (和'繼續標籤;'是唯一可能的,如果它實際上是一個被標記的循環。) – 2011-03-29 23:27:31

+0

是的,我試圖說明使用。 – 2011-03-30 04:41:55

1

我認爲這是它唯一使用的情況。它不是通常使用的東西,因爲它通常更易於更改標誌的值以提前結束循環。

1

正式的,我相信這被稱爲「標籤打破」。這對於打破嵌套循環很有用,例如:

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

我不認爲它對其他任何東西都有用。

6

你也可以說:

continue nameofloop; 

...跳轉到啓動名爲循環。我不認爲Java中有任何其他標籤用例。

-4
  1. 創建大小10.

  2. 的陣列(int)讓用戶指定的值 - (for循環使用)。

  3. 查找存儲在數組中的值的總數和平均值 - (使用for循環)。

+0

這是如何回答這個問題? – 2016-12-08 01:38:53