Java跳出多重循環的方法


 

  我們一般用break和cuntinue來控制單個循環,但是如果遇到有多個循環的情況呢,比如下面這個:

for (int i=0; i<10; i++) {
            for (int j=0; j<10; j++) {
                for (int k=0; k<10; k++) {
                    
                  }
            }
        }

  如果有以下需求一般怎么做呢?

   (1)當j+k > 5時結束所有循環;

  (2)當j+k > 5時結束最里兩層循環;

  (3)當j+k > 5時結束最里一層循環,跳過當前第二層循環,但繼續執行剩下的第二層循環;

 

 

 

1、 拋異常來跳出整個循環;

  比如說當j+k > 5時結束所有循環可使用此法:

try{
            for (int i=0; i<10; i++) {
                for (int j=0; j<10; j++) {
                    for (int k=0; k<10; k++) {
                        if (j + k > 5){
                            throw new Exception();
                        }
                    }
                }
            }
        }
catch (Exception e) {    }

 

2、 使用條件標識符來控制循環

比如說當j+k > 5時結束最里兩層循環,第一種方法就無法做到了,可使用此法:

        boolean firstLoop = true;
        boolean secondLoop = true;
        boolean thirdLoop = true;
        
        for (int i=0; i<10; i++) {
            if (!firstLoop){
                break;
            }
            
            for (int j=0; j<10; j++) {
                if (!secondLoop){
                    break;
                }
                
                for (int k=0; k<10; k++) {
                    if (!thirdLoop){
                        break;
                    }
                    if (j + k > 5){
                        thirdLoop = false;
                        secondLoop = false;
                    }
                }
            }
        }
    

 

3、 給循環添加標記,來更精准的控制循環

比如說當j+k > 5時結束最里一層循環,跳過當前第二層循環,但繼續執行剩下的第二層循環;這個使用第二種方法也能實現,只是代碼可能就會看起來更加的復雜;使用第三種方法就能讓這個變得簡單明了,代碼如下(secondLoop就是一個標記):

for (int i=0; i<10; i++) {
            secondLoop:
            for (int j=0; j<10; j++) {
                for (int k=0; k<10; k++) {
                    if (j + k > 5){
                        continue secondLoop;
                    }
                }
            }
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM