JAvaでどのように複数のループネストから飛び出すか


方法1:ラベルlabel:外側のループ文の前にラベルを定義し、内側のループ体コードにラベル付きbreak文を使用します.ラベルは多層ネストループから飛び出すために使用されます.ラベルlabelでどの文を終了したいかを表示できます.規定ラベルlabelはループの前に置かなければならない(ループはラベルに続く必要があることを意味する).類似の機能はC#ではgotoでしか行えないが、Javaはgotoキーワードを保持しているが、使用は許されない(gotoは予約字).Labelと次のループ文の間には他のコードは存在しないことに注意してください.ラベルはbreakとcontinueにも適用されます.デザインの観点から言えばLabelもgotoもいい考えではありません.
public class OutLoopWithLabel{  
    public static void main(String args[]) {  
        ok: //                 ok     :  
        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 ok; //                
            }  
        }  
    }  
}  

方法2:boolean,break組合せ:Boolean型条件変数とbreakの組合せにより,内層サイクルによりジャンプ前に条件変数を変化させ,外層サイクル検出条件変数の変化時に外層サイクルを終了する.
public class OutLoopWithBooleanBreak {  
    public static void main(String args[]) {  
        int arr[][] = { { 1, 2, 3 }, { 4, 5, 6, 7 }, { 9 } };  
        boolean found = false;  
        System.out.println("arr.length " + arr.length);  
        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; //             found  
                    break; //       
                }  
            }  
        }  
    }  
}  

方法3:return:内層サイクルで直接方法全体を飛び出す.
public class OutLoopWithReturn {  
    public static void main(String[] args) {  
        for (int i = 0; i < 10; i++) {  
            for (int j = 0; j < 10; j++) {  
                if (i * j > 60) {  
                    return;  
                }  
                System.out.println(i + " * " + j + " = " + (i * j));  
            }  
        }  
    }  
}  

方法4:throw Exception:内層サイクルで直接異常を放出する.
public class OutLoopWithException {  
    public static void main(String[] args) throws Exception {  
        for (int i = 0; i < 10; i++) {  
            for (int j = 0; j < 10; j++) {  
                if (i * j > 60) {  
                    throw new Exception("exception");  
                }  
                System.out.println(i + " * " + j + " = " + (i * j));  
            }  
        }  
    }  
}