JAVAで多重ネストループを飛び出すいくつかの方法

1718 ワード

一、ラベルの方式はC言語のgotoに似ていて、使い方は最外層の循環の上にラベルを置いて、それから奥層の循環コードの中でbreak+ラベルの方式を使って、最外層の循環にジャンプすることができます
public static void main(String[] args) {
    outer:
    for(int i=0;i<3;i++){
        for(int j=0;j<2;j++){
            if(i==1){
                continue outer;//  continue          ,           
            }
            System.out.println("i="+i+"   j="+j);
        }
    }
    System.out.println("    !");
}

  :
i=0   j=0
i=0   j=1
i=2   j=0
i=2   j=1
    !

public static void main(String[] args) {
    outer:
    for(int i=0;i<3;i++){
        for(int j=0;j<2;j++){
            if(i==1){
                break outer;//  break          
            }
            System.out.println("i="+i+"   j="+j);
        }
    }
    System.out.println("    !");
}

  :
i=0   j=0
i=0   j=1
    !

二、break、continue breakは現在のサイクルを飛び出し、内部飛び出し条件で外部サイクルを制御し、continueの場合は今回のサイクルをスキップして次のサイクルに入る
for(int i=0;i<4;i++){
for(int j=0;j<5;j++){
System.out.println("i="+i+"; j="+j);
if(j==3) {
i=4;
                break;
            }
        }
}

三、異常放出
try {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 5; j++) {
System.out.println("i=" + i + "; j=" + j);
if (j == 3) {
throw new Exception();
}
}
}
} catch (Exception e) {
System.out.println("e");
}

通常、ラベルは使用されませんが、外層のループ条件式の結果は、2次元配列で数値を検索するなど、内層ループ体コードによって制御されます.
int arr[][] = {{1,2,3},{4,5,6,7},{9}};
boolean found = false;
for(int i=0;i