方法一:
- 标号label:在外面的循环语句前定义一个标号,然后再里层循环体代码中使用带有标号的break语句。
- 标号用于跳出多层嵌套循环,你可以用标号label标出你想退出哪一个语句。规定标号label必需放在循环之前(意味着循环必需紧跟着标号)。
- 类似的功能我们在C#中只能用goto进行,Java虽然保留了goto关键词,却不允许使用 (goto为保留字)。
- 需要注意的是Label和下面的循环语句间不能有其他代码。标号同时适用于break和continue。
- 从设计角度来说是用Label、goto都不是好主意。如果循环体包含的代码片太长,且嵌套多层循环使用了多个标号,会导致代码不易读。
public class OutLoopWithLabel{ public static void main(String args[]) { ko: //在最外层循环语句前定义一个标号,注意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; //循环体内任意位置都可以使用带有标号的break语句跳出外层循环,结束整个循环。 } } } }
方法二:
使用boolean变量做flag,作为外层循环体结束的条件,赋予变量带有业务意义的名字。
public class OutLoopWithBooleanBreak { public static void main(String args[]) { int arr[][] = { { 1, 2, 3 }, { 4, 5, 6, 7 }, { 8,9 } }; boolean found = true; 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 = false; // 修改了外层循环中的参数found break; // 跳出循环 } } } } }
转自:https://blog.youkuaiyun.com/chen_2890/article/details/84948186