break和continue關鍵字是我們在循環中經常用到的
一般break是指終止循環,使整個循環不再繼續
而continue是跳過本次循環,繼續下一輪的循環
那麼在雙重循環中又是怎樣的呢?
先來看 break關鍵字
public static void main(String[] args) {
for (int i = ; i < ; i++) {
for (int j = ; j < ; j++) {
if(j==){//終止内層循環 ,繼續外層循環
break;
}
System.out.println("i="+i+";j="+j);
/*
i=0;j=0
i=1;j=0
i=2;j=0
i=3;j=0
*/
}
}
}
如果想要終止外層循環(整個循環)呢,可以給循環加個标簽(就像下面代碼塊中的outer和inner)
public static void main(String[] args) {
outer:
for (int i = ; i < ; i++) {
inner:
for (int j = ; j < ; j++) {
if(j==){
break outer ;//終止整個循環
/*
i=0;j=0
*/
}
}
如果是外層循環中的變量滿足條件時使用break,continue 關鍵字
public static void main(String[] args) {
outer:
for (int i = ; i < ; i++) {
inner:
for (int j = ; j < ; j++) {
if(i==){ //i==1時外層循環就不再繼續,循環終止
break outer;
}
System.out.println("i="+i+";j="+j);
/*
i=0;j=0
i=0;j=1
i=0;j=2
i=0;j=3
i=0;j=4
*/
}
}
}
如果沒有使用outer标簽的話,與使用continue關鍵字(無論是否加outer/inner标簽)的效果是一樣的
public static void main(String[] args) {
outer:
for (int i = 0; i < 5; i++) {
inner:
for (int j = 0; j < 5; j++) {
if(i==1){ //跳過i==1時的循環,繼續下一外層循環
break ;
}
System.out.println("i="+i+";j="+j);
/*
i=0;j=0
i=0;j=1
i=0;j=2
i=0;j=3
i=0;j=4
i=2;j=0
i=2;j=1
i=2;j=2
i=2;j=3
i=2;j=4
i=3;j=0
i=3;j=1
i=3;j=2
......
*/
}
}
那麼對于continue關鍵字,對于針對外層循環變量的條件,與上述代碼塊的結果是一樣的,而對于針對内層循環變量的條件
public static void main(String[] args) {
outer:
for (int i = ; i < ; i++) {
inner:
for (int j = ; j < ; j++) {
if(j==){//跳過了内層的這一循環,接着走内層的下一循環
continue ;//加不加innner都一樣
}
System.out.println("i="+i+";j="+j);
/*
i=0;j=0
i=0;j=2
i=0;j=3
i=1;j=0
i=1;j=2
i=1;j=3
i=2;j=0
i=2;j=2
i=2;j=3
i=3;j=0
i=3;j=2
i=3;j=3
*/
}
}
}