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

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

        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.");

運行結果:code

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語句,若是循環體包含的代碼片太長,且嵌套多層循環使用了多個標號,會致使代碼不易讀。blog

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

        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做爲結束條件。循環

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

相關文章
相關標籤/搜索