1. break、continue、return 的區別:
break默認是跳出最里層的循環,也就是break所在的最近的那層循環
continue是終止本次循環,繼續下次循環
return 結束當前方法
3層循環的簡單測試:
1 for (int i = 0; i < 3; i++) { 2 for1: 3 for (int j = 0; j <3; j++) { 4 for2: 5 for (int m = 0; m < 3; m++) { 6 for3: 7 System.out.println(i+"--"+j+"--"+m); 8 } 9 } 10 }
1 0--0--0 2 0--0--1 3 0--0--2 4 0--1--0 5 0--1--1 6 0--1--2 7 0--2--0 8 0--2--1 9 0--2--2 10 1--0--0 11 1--0--1 12 1--0--2 13 1--1--0 14 1--1--1 15 1--1--2 16 1--2--0 17 1--2--1 18 1--2--2 19 2--0--0 20 2--0--1 21 2--0--2 22 2--1--0 23 2--1--1 24 2--1--2 25 2--2--0 26 2--2--1 27 2--2--2
簡單測試break:
1 for (int i = 0; i < 3; i++) { 2 for1: 3 for (int j = 0; j <3; j++) { 4 for2: 5 for (int m = 0; m < 3; m++) { 6 for3: 7 if (m == 1) { 8 break; 9 } 10 System.out.println(i+"--"+j+"--"+m); 11 } 12 } 13 }
1 0--0--0 2 0--1--0 3 0--2--0 4 1--0--0 5 1--1--0 6 1--2--0 7 2--0--0 8 2--1--0 9 2--2--0
簡單測試continue:
1 for (int i = 0; i < 3; i++) { 2 for1: 3 for (int j = 0; j <3; j++) { 4 for2: 5 for (int m = 0; m < 3; m++) { 6 for3: 7 if (m == 1) { 8 continue; 9 } 10 System.out.println(i+"--"+j+"--"+m); 11 } 12 } 13 }
1 0--0--0 2 0--0--2 3 0--1--0 4 0--1--2 5 0--2--0 6 0--2--2 7 1--0--0 8 1--0--2 9 1--1--0 10 1--1--2 11 1--2--0 12 1--2--2 13 2--0--0 14 2--0--2 15 2--1--0 16 2--1--2 17 2--2--0 18 2--2--2
簡單測試return:
1 for (int i = 0; i < 3; i++) { 2 for1: 3 for (int j = 0; j <3; j++) { 4 for2: 5 for (int m = 0; m < 3; m++) { 6 for3: 7 if (m == 1) { 8 return; 9 } 10 System.out.println(i+"--"+j+"--"+m); 11 } 12 } 13 }
1 0--0--0
2. 如何跳出多層循環
思路:對每一層設置標志位,設置方法---變量名:
注意這里的冒號至關重要
簡單測試:
1 for (int i = 0; i < 3; i++) { 2 for1: 3 for (int j = 0; j <3; j++) { 4 for2: 5 for (int m = 0; m < 3; m++) { 6 for3: 7 if (m == 1) { 8 break for2; 9 } 10 System.out.println(i+"--"+j+"--"+m); 11 } 12 } 13 }
1 0--0--0 2 0--1--0 3 0--2--0 4 1--0--0 5 1--1--0 6 1--2--0 7 2--0--0 8 2--1--0 9 2--2--0