2013-01-18 57 views
1

是否有一個命令可以退出內部for-loop中的if語句並讓它只通過內部的for-loop?是否可以退出if語句並返回到內部for-loop?

例如:

for (int i = 0; i < blah.length; i++) { 
    blh = scan.nextDouble();    
    blah[i] = blh; 

    if(scores[i] < MIN || scores[i] > MAX_SCORE) { 
     errFlag = true; 
     System.out.println("ERROR: Enter numbers in the range of " + 
      MIN + "-" + MAX_SCORE + "!"); 
     System.out.print("ERROR: Enter all " + numStudents + " scores again: "); 
     errFlag = false; 
    }      
} 
+2

什麼「返回到內部for-循環「意味着 –

回答

3

如果你想if語句使其退出,而是停留在for循環中,你可以使用continue語句。它就像一個break語句,但它只是跳過循環的其餘部分,並在循環的開始處繼續。

10

您可以使用標籤塊

FOUND: { 
    for(Type mt: TypeList) 
     if(condtion(mt)) 
      break FOUND; 
    // not found code here 
} 

Java Language Specification 14.7

帶標籤的語句被執行直接包含聲明執行。如果語句由標識符標記,並且包含的​​語句由於與相同標識符中斷而突然完成,則標記語句正常完成。在聲明中突然完成的所有其他情況下,標記語句突然完成了同樣的原因

+1

即將發佈此:)額外的資源,如果有人想了解不同的分支狀態NTS。 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html – Mick

+0

糾正我,如果我錯了,但不會有沒有標籤休息在這種情況下做同樣的事情。 –

+2

稍有不同。被評論爲「此處未找到代碼」的部分將使用正常中斷執行。當然,當你有多個嵌套循環並且你想退出到一個特定的循環時,標籤通常是很棒的,但是在這種情況下,它只是簡單的代碼。 – Mick

1

其他選項:

如果你想跳過在 if塊的進一步代碼,但不打算

打破循環,你可以在一個新的方法提取代碼並返回之間(根據所需的條件),這樣你可以達到你的目的(如果我正確地理解問題)