Java 如何跳出多重嵌套循環體?


1. 在最外層循環語句前定義一個標號,循環體內任意位置都可以使用帶有標號的break語句跳出外層循環,結束整個循環。

        System.out.println("MainClass1 Start...");
        
        ko:
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                System.out.println("i=" + i + ",j=" + j);
                if (j == 5)
                    break ko;
            }
        }
        
        System.out.println("MainClass1 End.");

運行結果:

MainClass1 Start...
i=0,j=0
i=0,j=1
i=0,j=2
i=0,j=3
i=0,j=4
i=0,j=5
MainClass1 End.

注:標號一定是加在循環體前面,不能放在帶標號break語句所在的循環體之后;break+標號有點像goto語句,如果循環體包含的代碼片太長,且嵌套多層循環使用了多個標號,會導致代碼不易讀。

2. 使用boolean變量做flag,作為外層循環體結束的條件,賦予變量帶有業務意義的名字。

        System.out.println("MainClass1 Start...");
        int arr[][] = { { 1, 2, 3 }, { 4, 5, 6, 7 }, { 9 } };
        boolean found = false;

        for (int i = 0; i < arr.length && !found; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                System.out.println("i=" + i + ",j=" + j);
                if (arr[i][j] == 5) {
                    found = true;
                    break;
                }
            }
        }
        System.out.println("MainClass1 End.");

運行結果:

MainClass1 Start...
i=0,j=0
i=0,j=1
i=0,j=2
i=1,j=0
i=1,j=1
MainClass1 End.

注:這個辦法看起來易讀一些,個人感覺比第1個好,如果很多層的嵌套循環,需要在外面每一層都加上這個flag作為結束條件。

當然,我相信還有更好的更實用的辦法,你有你牛逼,有就貼出來吧。

 


免責聲明!

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



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