2017-01-11 32 views
0
public class Newfile{ 
    public static void main(String []args){ 
     for(int a=1; a < 5; a++){ 
      for(int b=1; b < 5; b++){ 
       if(a == b){ 
        System.out.println("pair found " + a + " " + b); 
        break; 
        } 
       } 
      } 
    } 
} 

滿足這個代碼只是打破了最內側的循環,所以它打破與b循環而不是一個循環,我做這個練習。休息2個循環狀況的Java

我想知道,有沒有辦法打破一旦a == b滿意的BOTH循環?

+1

http://stackoverflow.com/questions/886955/breaking-out-of-nested-loops-in-java? rq = 1這可以幫助 – Jerry06

回答

1

使用標籤的一種替代方法是從所有涉及的循環中爲循環計數器賦值,以便在遇到特定狀態或條件時兩個循環條件都會失敗。

 for (int a=1; a < 5; a++) { 
      for (int b=1; b < 5; b++) { 
       if (a == b) { 
        System.out.println("pair found " + a + " " + b); 
        b = 5; 
        a = 5; 
       } 
      } 
     } 
+0

使用標籤可以減少代碼:) –

+0

@Tim Biegeleisen謝謝。 –

+0

這肯定會起作用,但是當條件滿足時,你會失去'a'和'b'的價值。這在您需要使用'a'或'b'的值的情況下變得相關。例如,在二維陣列中,[i] [j]'的位置是否定的。 –

1

只需使用一個標誌,打破了這兩個循環:

boolean breakAll = false; // <<<< flag for breaking out 
for(int a=1; a < 5 && !breakAll; a++){ 
    for(int b=1; b < 5 && !breakAll; b++){ 
     if(a == b){ 
      System.out.println("pair found " + a + " " + b); 
      breakAll = true; 
     } 
    } 
}