Java中跳出多层循环的各种方法

在Java程序中可能使用多层循环来处理复杂的逻辑。但如果要从最内层循环跳出最外层循环是比较麻烦。

在Java程序中可能使用多层循环来处理复杂的逻辑。但如果要从最内层循环跳出最外层循环是比较麻烦。下面的代码是一个三层循环的例子:

String[]arr=newString[]{"a","b","c"};
for(Strings:arr){
  for(Stringss:arr){
        for(Stringsss:arr){
            System.out.println(sss);
        }
    }

}

如果要从第三层循环跳出第一层循环,可以通过设置标志的方法来实现,但这比较麻烦。当然,如何使用过C或C++的开发人员可以想到使用goto语句,如下面的代码所示:

String[]arr=newString[]{"a","b","c"};
for(Strings:arr){
  for(Stringss:arr){
        for(Stringsss:arr){
            System.out.println(sss);
          goto label;
        }
    }
}
label:

虽然上面的代码看似可行,不过Java虽然还有goto关键字,但这个关键字却不能使用(Java编译器会抛出异常)。不过Java还提供了另外一种类似goto的解决方案,这就是break n和continue n。其中n表示标签名。只是在Java中只能在for、while、do...while三种循环语句前面定义,标签与循环体之间不能有任何其他的语句,如下面的标签定义是合法的:

label: //定义标签
for(inti=0;i<10;i++){
  ... ...
}

下面的标签定义是不合法的:

label: //定义标签
System.out.println("abcd"); //此处不能有任何Java语句
for(inti=0;i<10;i++){
  ... ...
}

###使用break n跳出多层循环的代码如下:

labelA:
for(Strings:arr){
  for(Stringss:arr){
      for(Stringsss:arr) {
          System.out.print(sss);
          breaklabelA;
      }
  }
}

上面的代码只输出了一个a,在第三层使用break labelA可以理解为如下的代码形式(虽然这段代码并不符合Java语法规则):

for(Strings:arr){
  for(Stringss:arr){
      for(Stringsss:arr){
          System.out.print(sss);
          gotolabelA;
      }
  }
}
labelA:

当然,还可以使用continue labelA继续执行某一层的循环,代码如下:

labelA:
for(Strings:arr){
  for(Stringss:arr) {
      for(Stringsss:arr){
          System.out.print(sss);
          continuelabelA;
      }
  }
}

上面的代码输出“aaa”,读者可以将上面的代码理解为如下的形式(只是代码形式,并不符合Java语法规则):

for(Strings:arr){
  for(Stringss:arr){
      for(Stringsss:arr){
          System.out.print(sss);
          gotolabelA;

      }
  }
  labelA:
}

当然,也可以按同样的方法跳出或继续第二层循环,代码如下:

for(Strings:arr){
  labelA:
  for(Stringss:arr) {

      for(Stringsss:arr){
          System.out.print(sss);
          breaklabelA;
      }
  }
}

上面的代码输出“aaa”。

for(Strings:arr){
  labelA:
  for(Stringss:arr) {

      for(Stringsss:arr) {
          System.out.print(sss);
          continuelabelA;
      }
  }
}

上面的代码输出“aaaaaaaaa”。

转载于:https://my.oschina.net/csmw00/blog/676054

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Java,可以使用标签(label)和break语句来跳出多重循环。下面是一个例子: ``` outerloop: for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (i == 5 && j == 5) { break outerloop; } // do something } } ``` 在上面的例子,我们使用了一个名为`outerloop`的标签来标记外层循环。当条件`i == 5 && j == 5`满足时,我们使用`break outerloop;`语句来跳出外层循环。 需要注意的是,使用标签和break语句跳出多重循环可能会使代码变得难以理解和维护,应当谨慎使用。 ### 回答2: 在Java跳出多重循环可以使用带有标签(label)的break语句。 在多重循环,可以给外层循环和内层循环分别添加唯一的标签。标签的名称可以是任意合法的标识符,并以冒号(:)结尾。 通过在break语句前添加标签,可以让程序跳出指定的循环。当我们想要跳出多重循环时,只需要在break语句指定想要跳出的最外层循环的标签即可。 下面是一个示例代码: ```java outerLoop: for (int i = 1; i <= 3; i++) { for (int j = 1; j <= 3; j++) { if (i == 2 && j == 2) { break outerLoop; // 跳出outerLoop标签指定的循环 } System.out.println("i: " + i + ", j: " + j); } } ``` 在上面的代码,我们使用outerLoop作为最外层循环的标签。当内层循环的i和j都等于2时,通过break outerLoop语句,程序将跳出outerLoop循环。 输出结果为: ``` i: 1, j: 1 i: 1, j: 2 i: 1, j: 3 ``` 可以看到,当i和j都等于2时,内层循环被跳过,程序直接跳出了外层循环。 通过标签和break语句,我们可以在需要的时候跳出多重循环,提高程序的灵活性和效率。 ### 回答3: 在Java跳出多重循环有几种方法。 一种方法是使用标签(label)。我们可以在外层循环前添加一个标签,然后在内层循环使用break语句加上标签来跳出外层循环。例如: ```java outerloop: for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (i == 1 && j == 1) { break outerloop; } System.out.println(i + ", " + j); } } ``` 上面的代码,当内层循环的条件满足时,会跳出外层循环。 另一种方法是使用布尔变量。我们可以在外层循环的条件判断加入一个布尔变量作为控制条件,在内层循环改变这个变量的值来跳出外层循环。例如: ```java boolean shouldBreak = false; for (int i = 0; i < 3 && !shouldBreak; i++) { for (int j = 0; j < 3 && !shouldBreak; j++) { if (i == 1 && j == 1) { shouldBreak = true; } System.out.println(i + ", " + j); } } ``` 上面的代码,当内层循环的条件满足时,改变布尔变量`shouldBreak`的值为`true`,从而跳出外层循环。 此外,还可以使用带有标志的循环,例如使用while循环,通过改变标志的值来跳出循环。但是这种方法需要额外的逻辑来控制循环的执行。 总结来说,通过使用标签、布尔变量或带有标志的循环,我们可以在Java实现跳出多重循环的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值