1. 在最外层循环语句前定义一个标号,循环体内任意位置均可以使用带有标号的break语句跳出外层循环,结束整个循环。spa
System.out.println("MainClass1 Start..."); 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; } } System.out.println("MainClass1 End.");
运行结果:code
MainClass1 Start... i=0,j=0 i=0,j=1 i=0,j=2 i=0,j=3 i=0,j=4 i=0,j=5 MainClass1 End.
注:标号必定是加在循环体前面,不能放在带标号break语句所在的循环体以后;break+标号有点像goto语句,若是循环体包含的代码片太长,且嵌套多层循环使用了多个标号,会致使代码不易读。blog
2. 使用boolean变量作flag,做为外层循环体结束的条件,赋予变量带有业务意义的名字。class
System.out.println("MainClass1 Start..."); int arr[][] = { { 1, 2, 3 }, { 4, 5, 6, 7 }, { 9 } }; boolean found = false; 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; break; } } } System.out.println("MainClass1 End.");
运行结果:变量
MainClass1 Start... i=0,j=0 i=0,j=1 i=0,j=2 i=1,j=0 i=1,j=1 MainClass1 End.
注:这个办法看起来易读一些,我的感受比第1个好,若是不少层的嵌套循环,须要在外面每一层都加上这个flag做为结束条件。循环
固然,我相信还有更好的更实用的办法,你有你牛逼,有就贴出来吧。di