在线代理浏览国外网站,wordpress 免费字体,青岛网站优化,网站搭建赚钱吗From: https://www.cnblogs.com/fastfn/p/9777067.html
场景#xff1a;很多的时候需要做到跳出多重循环#xff0c;而在Java中虽然后goto关键字#xff0c;但是是保留字#xff0c;并没有启用。而在处理分支结构的if...else,switch...case,好像都达不到想要的效果。
作为…From: https://www.cnblogs.com/fastfn/p/9777067.html
场景很多的时候需要做到跳出多重循环而在Java中虽然后goto关键字但是是保留字并没有启用。而在处理分支结构的if...else,switch...case,好像都达不到想要的效果。
作为终止当前代码的return并不能完成业务需求能用到的只有break,但是break只能跳出当前的循环。
代码示例break private static void testBreak() {for (int i 0; i 3; i) {for (int j 0; j 5; j) {System.out.println(testBreakj j);if (j 2)break;}System.out.println(testBreaki i);}System.out.println(testBreakEND);} 结果 testBreakj0
testBreakj1
testBreakj2
testBreaki0
testBreakj0
testBreakj1
testBreakj2
testBreaki1
testBreakj0
testBreakj1
testBreakj2
testBreaki2
testBreakEND 结论所有的执行到 j2 的时候都会终止但是只能跳出当前循环。 解决方案一继续使用break但是在添加一个flag作为判断条件每次判断条件的时候都会判断循环和flag.
代码 private static void outloopByBreak() {boolean flag true;for (int i 0; i 3 flag; i) {for (int j 0; j 5; j) {System.out.println(outloopByBreakj j);if (j 2) {flag false;break;}}System.out.println(outloopByBreaki i);}System.out.println(outloopByBreakEND);} 结果
outloopByBreakj0
outloopByBreakj1
outloopByBreakj2
outloopByBreaki0
outloopByBreakEND
结论能解决跳出循环的问题但是是会在内部循环的完成之后继续往下执行知道下次判断才会跳出循环。 解决方案二Java中break有一种用法可以做到类似goto的效果,在需要跳出的循环之前加一个标志之后break 标志可以做到跳出循环推荐使用。
代码 private static void outloopByBreakLikeGoto() {flag: for (int i 0; i 3; i) {for (int j 0; j 5; j) {System.out.println(outloopByBreakLikeGotoj j);if (j 2) break flag;}System.out.println(outloopByBreakLikeGotoi i);}System.out.println(outloopByBreakLikeGotoEND);} 结果
outloopByBreakLikeGotoj0
outloopByBreakLikeGotoj1
outloopByBreakLikeGotoj2
outloopByBreakLikeGotoEND
结论做到了类似goto的效果 解决方案三try...catch方式也能做到跳出多重循环的效果
代码 private static void outloopByTryCatch() {try {for (int i 0; i 3; i) {for (int j 0; j 5; j) {System.out.println(outloopByTryCatchj j);if (j 2) throw new Exception();}System.out.println(outloopByTryCatchi i);}} catch (Exception e) {System.out.println(outloopByTryCatch跳出);}System.out.println(outloopByTryCatchEND);} 结果
outloopByTryCatchj0
outloopByTryCatchj1
outloopByTryCatchj2
outloopByTryCatch跳出
outloopByTryCatchEND
结论用抛异常的方式跳出但是不推荐