Java 跳出For循环总结
Posted 在奋斗的大道
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 跳出For循环总结相关的知识,希望对你有一定的参考价值。
Java 8 之前终止单层For循环
功能代码:
// break 终止循环
for (int i=0; i< 10; i++)
if(i == 5)
break;
System.out.println("当前 i值为:" + i);
System.out.println("--------------------------");
// continue 跳出当前循环,执行下一个循环
for (int j=0; j< 10; j++)
if(j == 5)
continue;
System.out.println("当前 j值为:" + j);
System.out.println("--------------------------");
控制台输出:
当前 i值为:0
当前 i值为:1
当前 i值为:2
当前 i值为:3
当前 i值为:4
--------------------------
当前 j值为:0
当前 j值为:1
当前 j值为:2
当前 j值为:3
当前 j值为:4
当前 j值为:6
当前 j值为:7
当前 j值为:8
当前 j值为:9
--------------------------
Java 关键字break 和continue 总结:
break语句可以跳出当前循环;
break语句通常配合if,在满足条件时提前结束整个循环;
break语句总是跳出最近的一层循环;
continue语句可以提前结束本次循环;
continue语句通常配合if,在满足条件时提前结束本次循环。
Java 8 之前终止单层For循环拓展
疑惑1:Java 通过return关键字终止程序执行,实现终止for 循环
功能代码:
public static void main(String[] args)
// break 终止循环
for (int i=0; i< 10; i++)
if(i == 5)
break;
System.out.println("当前 i值为:" + i);
System.out.println("--------------------------");
// continue 跳出当前循环,执行下一个循环
for (int j=0; j< 10; j++)
if(j == 5)
continue;
System.out.println("当前 j值为:" + j);
System.out.println("--------------------------");
// return 终止程序执行,实现终止当前for 循环
for (int j=0; j< 10; j++)
if(j == 5)
return;
System.out.println("当前 j值为:" + j);
System.out.println("--------------------------");
// 基于IntStream.range() 生成连续集合
List<Integer> colls = IntStream.range(1, 10).boxed().collect(Collectors.toList());
// Java8 Stream 终止循环
colls.stream().forEach(item ->
// 判断return关键字,在Stream中不生效
if(item == 5)
return;
// 判断continue/break关键字,在Stream中不允许使用
// if(item == 5)
// continue;
//
// if(item == 5)
// break;
//
System.out.println("Stream 当前item 值为:" + item);
);
System.out.println("--------------------------");
// Java8 Stream 终止循环,通过throws RuntimeException
colls.stream().forEach(item ->
if (item == 5)
throw new RuntimeException("通过抛出异常,终止for循环");
System.out.println("Stream 当前item 值为:" + item);
);
控制台输出:
当前 i值为:0
当前 i值为:1
当前 i值为:2
当前 i值为:3
当前 i值为:4
--------------------------
当前 j值为:0
当前 j值为:1
当前 j值为:2
当前 j值为:3
当前 j值为:4
当前 j值为:6
当前 j值为:7
当前 j值为:8
当前 j值为:9
--------------------------
当前 j值为:0
当前 j值为:1
当前 j值为:2
当前 j值为:3
当前 j值为:4
结论:通过return 终止程序执行,实现终止for 循环可行
疑惑2:Java 通过抛出异常throw RunTimeException终止程序执行,实现终止for 循环。
功能代码:
public static void main(String[] args)
// break 终止循环
for (int i=0; i< 10; i++)
if(i == 5)
break;
System.out.println("当前 i值为:" + i);
System.out.println("--------------------------");
// continue 跳出当前循环,执行下一个循环
for (int j=0; j< 10; j++)
if(j == 5)
continue;
System.out.println("当前 j值为:" + j);
System.out.println("--------------------------");
// return 终止程序执行,实现终止当前for 循环
// for (int j=0; j< 10; j++)
// if(j == 5)
// return;
//
// System.out.println("当前 j值为:" + j);
//
// 通过抛出异常:throw RuntimeException,终止程序执行, 实现终止当前for循环
for (int j=0; j< 10; j++)
if(j == 5)
throw new RuntimeException("通过抛出异常,终止程序执行,实现终止当前for循环");
System.out.println("当前 j值为:" + j);
System.out.println("--------------------------");
// 基于IntStream.range() 生成连续集合
List<Integer> colls = IntStream.range(1, 10).boxed().collect(Collectors.toList());
// Java8 Stream 终止循环
colls.stream().forEach(item ->
// 判断return关键字,在Stream中不生效
if(item == 5)
return;
// 判断continue/break关键字,在Stream中不允许使用
// if(item == 5)
// continue;
//
// if(item == 5)
// break;
//
System.out.println("Stream 当前item 值为:" + item);
);
System.out.println("--------------------------");
// Java8 Stream 终止循环,通过throws RuntimeException
colls.stream().forEach(item ->
if (item == 5)
throw new RuntimeException("通过抛出异常,终止for循环");
System.out.println("Stream 当前item 值为:" + item);
);
控制台输出:
当前 i值为:0
当前 i值为:1
当前 i值为:2
当前 i值为:3
当前 i值为:4
--------------------------
当前 j值为:0
当前 j值为:1
当前 j值为:2
当前 j值为:3
当前 j值为:4
当前 j值为:6
当前 j值为:7
当前 j值为:8
当前 j值为:9
--------------------------
当前 j值为:0
当前 j值为:1
当前 j值为:2
当前 j值为:3
当前 j值为:4
Exception in thread "main" java.lang.RuntimeException: 通过抛出异常,终止程序执行,实现终止当前for循环
at ForTest.main(ForTest.java:34)
结论:通过抛出异常throw RuntimeException() 终止程序执行,实现终止for 循环可行。
Java 8 Stream终止foreach循环
功能代码:
// 基于IntStream.range() 生成连续集合
List<Integer> colls = IntStream.range(1, 10).boxed().collect(Collectors.toList());
// Java8 Stream 终止循环
colls.stream().forEach(item ->
// 判断return关键字,在Stream中不生效
if(item == 5)
return;
// 判断continue/break关键字,在Stream中不允许使用
// if(item == 5)
// continue;
//
// if(item == 5)
// break;
//
System.out.println("Stream 当前item 值为:" + item);
);
控制台输出:
--------------------------
Stream 当前item 值为:1
Stream 当前item 值为:2
Stream 当前item 值为:3
Stream 当前item 值为:4
Stream 当前item 值为:6
Stream 当前item 值为:7
Stream 当前item 值为:8
Stream 当前item 值为:9
--------------------------
Java8 Stream 关键字break、continue和return 总结:
java8 Stream 不支持关键字break 和continue
java8 Stream 通过return 关键字无法实现暂停/终止foreach 执行。
Java8 Stream 终止foreach 循环拓展
解决思路:通过抛出异常throw RuntimeException 终止程序执行,实现终止foreach 执行
功能代码:
// Java8 Stream 终止循环,通过throws RuntimeException
colls.stream().forEach(item ->
if (item == 5)
throw new RuntimeException("通过抛出异常,终止for循环");
System.out.println("Stream 当前item 值为:" + item);
);
控制台输出:
--------------------------
Stream 当前item 值为:1
Stream 当前item 值为:2
Stream 当前item 值为:3
Stream 当前item 值为:4
Exception in thread "main" java.lang.RuntimeException: 通过抛出异常,终止for循环
at ForTest.lambda$main$1(ForTest.java:63)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
at ForTest.main(ForTest.java:61)
Java 跳出嵌套For循环
方式一:通过return 关键字 跳出 嵌套for 循环。
情况一:无返回值函数
/**
* 自定义函数 没有返回值,通过return 终止嵌套for 循环
*/
public void noValue()
for (int i = 0; i <= 10; i++)
for (int j=0; j<=10; j++)
if (j == 5)
return;
System.out.println("当前j值为:" + j);
System.out.println("当前i值为:" + i);
情况二:有返回值函数
/**
* 自定义函数 有返回值,通过return 终止嵌套for 循环
*/
public Integer value()
for (int i = 0; i <= 10; i++)
for (int j=0; j<=10; j++)
if (j == 5)
return j;
System.out.println("当前j值为:" + j);
System.out.println("当前i值为:" + i);
return 0;
代码验证:
public static void main(String[] args)
ForTest instance = new ForTest();
instance.noValue();
System.out.println("--------------");
Integer num = instance.value();
System.out.println("返回值为:" + num);
控制台输出:
当前j值为:0
当前j值为:1
当前j值为:2
当前j值为:3
当前j值为:4
--------------
当前j值为:0
当前j值为:1
当前j值为:2
当前j值为:3
当前j值为:4
返回值为:5
方式二:通过定义一个布尔值标识变量,实现终止/暂停嵌套for循环。
情况一:无返回值函数
/**
* 自定义函数 没有返回值,通过布尔标识变量 终止/暂停嵌套for 循环
*/
public void noValue()
// 定义布尔值标识变量
boolean target = true;
for (int i = 0; i <= 10 && target; i++)
for (int j=0; j<=10 && target; j++)
if (j == 5)
target = false;
System.out.println("当前j值为:" + j);
System.out.println("当前i值为:" + i);
情况二:有返回值函数
/**
* 自定义函数 有返回值,通过布尔标识变量 终止/暂停嵌套for 循环
*/
public Integer value()
// 定义布尔值标识变量
boolean target = true;
for (int i = 0; i <= 10 && target; i++)
for (int j=0; j<=10 && target; j++)
if (j == 5)
target = false;
return j;
System.out.println("当前j值为:" + j);
System.out.println("当前i值为:" + i);
return 0;
代码验证:
public static void main(String[] args)
ForTest instance = new ForTest();
instance.noValue();
System.out.println("--------------");
Integer num = instance.value();
System.out.println("返回值为:" + num);
控制台输出:
当前j值为:0
当前j值为:1
当前j值为:2
当前j值为:3
当前j值为:4
当前j值为:5
当前i值为:0
--------------
当前j值为:0
当前j值为:1
当前j值为:2
当前j值为:3
当前j值为:4
返回值为:5
方式三:通过抛出异常,实现终止/暂停嵌套For 循环
情况一:无返回值函数
/**
* 自定义函数 没有返回值,通过抛出异常 终止/暂停嵌套for 循环
*/
public void noValue()
for (int i = 0; i <= 10; i++)
for (int j=0; j<=10; j++)
if (j == 5)
throw new RuntimeException("通过抛出运行异常,终止/暂停嵌套for 循环");
System.out.println("当前j值为:" + j);
System.out.println("当前i值为:" + i);
情况二:有返回值函数
/**
* 自定义函数 有返回值,通过抛出异常 终止/暂停嵌套for 循环
*/
public Integer value()
int num = 0;
for (int i = 0; i <= 10; i++)
for (int j=0; j<=10; j++)
num = j;
if (j == 5)
throw new RuntimeException("通过抛出运行异常,终止/暂停嵌套for 循环");
System.out.println("当前j值为:" + j);
System.out.println("当前i值为:" + i);
return num;
代码测试:
public static void main(String[] args)
ForTest instance = new ForTest();
instance.noValue();
System.out.println("--------------");
Integer num = instance.value();
System.out.println("返回值为:" + num);
控制台输出:
Exception in thread "main" java.lang.RuntimeException: 通过抛出运行异常,终止/暂停嵌套for 循环
at ForTest.noValue(ForTest.java:84)
at ForTest.main(ForTest.java:72)
当前j值为:0
当前j值为:1
当前j值为:2
当前j值为:3
当前j值为:4
Process finished with exit code 1
以上是关于Java 跳出For循环总结的主要内容,如果未能解决你的问题,请参考以下文章
温习js中的for,forEach,map, some, every用法总结,跳出循环方法
java里面的一个break是跳出一层for循环,还是可以跳出几层