黑马程序员技术交流社区
标题: 在JAVA中如何跳出当前的多重嵌套循环? [打印本页]
作者: 刘沛霞 时间: 2013-5-3 15:18
标题: 在JAVA中如何跳出当前的多重嵌套循环?
在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break 语句,即可跳出外层循环。例如,
ok:
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 ok;
}
}
另外,我个人通常并不使用标号这种方式,而是让外层的循环条件表达式的结果可以受到里层循环体代码的控制,例如,要在二维数组中查找到某个数字。
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.length;j++){
System.out.println(“i=” + i + “,j=” + j);
if(arr[j] == 5) {
found = true;
break;
}
}
}
作者: 殇_心。 时间: 2013-5-3 15:39
设置个标记,标记你需要跳到哪个for循环就行。
测试代码如下:
class Demo
{
public static void main(String[] args)
{
L:for(int i=0;i<arr.length && !found;i++) {
for(int j=0;j<arr.length;j++){
System.out.println("i="+ i + ",j=" + j);
if(arr[j] == 5) {
found = true;
break L;
}
}
}
}
}
作者: 刘海东 时间: 2013-5-3 15:41
我记得是可以给循环编号:
a:for(int i=0;i<arr.length && !found;i++) {
b: for(int j=0;j<arr.length;j++){
System.out.println(“i=” + i + “,j=” + j);
if(arr[j] == 5) {
found = true;
break a;
你试试看,这样能不能跳出外循环
作者: 曹睿翔 时间: 2013-5-3 15:49
楼下好心,可惜没看清楼主是分享的,不是疑问的{:soso_e128:}
多希望更多人提问题,一群饿狼等着呢
作者: 一直在路上 时间: 2013-5-3 15:54
定义标签就可以跳出任意一层循环,我感觉你的for循环写的也有点问题,给你改了该啊。
public class Test4 {
public static void main(String[] args) {
int arr[][] = {{1,2,3},{4,5,6,7},{9}};
boolean found = false;
a: //定义循环的标签
for(int i=0;i<arr.length && !found;i++){
b: //定义循环的标签
for(int j=0;j<arr[i].length;j++){
System.out.println("i=" + i + "j=" + j);
if(arr[i][j]== 5) {
found = true;
break a;
// break b;// 可以跳出b
}
}
}
}
}
作者: 曹睿翔 时间: 2013-5-3 15:59
尹桥印 发表于 2013-5-3 15:56
都回答了。其实如果不为技术分来的,也让自己有一个知识复习的
我是想着不能辜负大家的好心,既然如此,那我就不担心了
作者: 刘沛霞 时间: 2013-5-4 08:39
曹睿翔 发表于 2013-5-3 15:49
楼下好心,可惜没看清楼主是分享的,不是疑问的
多希望更多人提问题,一群饿狼等着呢 ...
哈哈 曹哥万福哈
作者: 曹宇 时间: 2013-5-4 16:34
好像C语言中的 goto 语句
作者: 张林敏 时间: 2013-5-4 21:25
标号没有使用过,好像说使用标号会破坏面向对象编程
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |