咱们通常用break和cuntinue来控制单个循环,可是若是遇到有多个循环的状况呢,好比下面这个:oop
for (int i=0; i<10; i++) { for (int j=0; j<10; j++) { for (int k=0; k<10; k++) { } } }
若是有如下需求通常怎么作呢?spa
(1)当j+k > 5时结束全部循环;code
(2)当j+k > 5时结束最里两层循环;blog
(3)当j+k > 5时结束最里一层循环,跳过当前第二层循环,但继续执行剩下的第二层循环;io
一、 抛异常来跳出整个循环;class
好比说当j+k > 5时结束全部循环可以使用此法:循环
try{ for (int i=0; i<10; i++) { for (int j=0; j<10; j++) { for (int k=0; k<10; k++) { if (j + k > 5){ throw new Exception(); } } } } } catch (Exception e) { }
二、 使用条件标识符来控制循环方法
好比说当j+k > 5时结束最里两层循环,第一种方法就没法作到了,可以使用此法:异常
boolean firstLoop = true; boolean secondLoop = true; boolean thirdLoop = true; for (int i=0; i<10; i++) { if (!firstLoop){ break; } for (int j=0; j<10; j++) { if (!secondLoop){ break; } for (int k=0; k<10; k++) { if (!thirdLoop){ break; } if (j + k > 5){ thirdLoop = false; secondLoop = false; } } } }
三、 给循环添加标记,来更精准的控制循环di
好比说当j+k > 5时结束最里一层循环,跳过当前第二层循环,但继续执行剩下的第二层循环;这个使用第二种方法也能实现,只是代码可能就会看起来更加的复杂;使用第三种方法就能让这个变得简单明了,代码以下(secondLoop就是一个标记):
for (int i=0; i<10; i++) { secondLoop: for (int j=0; j<10; j++) { for (int k=0; k<10; k++) { if (j + k > 5){ continue secondLoop; } } } }