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 RuntimeExceptioncolls.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 RuntimeExceptioncolls.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 RuntimeExceptioncolls.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值为:4Process finished with exit code 1

Java 跳出For循环总结相关推荐

  1. java跳出指定循环

    java跳出指定循环: 方法一: 在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break 语句,即可跳出外层循环: for(int i = 0;i < 10; i ++ ...

  2. Java跳出多重循环

    From: https://www.cnblogs.com/fastfn/p/9777067.html 场景:很多的时候需要做到跳出多重循环,而在Java中虽然后goto关键字,但是是保留字,并没有启 ...

  3. java跳出for循环_Java跳出多层for循环的4种方式

    Java跳出多层for循环的4种方式 一.使用return关键字控制 for (int i = 0;i<10;i++){ for (int j = 0; j<10; j++) { if ( ...

  4. Java跳出多重循环的方法

    我们一般用break和cuntinue来控制单个循环,但是如果遇到有多个循环的情况呢,比如下面这个: for (int i=0; i<10; i++) {for (int j=0; j<1 ...

  5. java跳出双重循环

    例如有一个双重循环 for(int i=0;i<10;i++){for(int j=0;j<10;j++){代码块}} 想要在  代码块  处跳出两个for循环,那么可以在外层for循环外 ...

  6. Java 跳出for循环几个的方式

    一共四种类型 一.跳出本次循环(continue) for(int i = 0; i< 999; i++){if(i == 520){log.debug("啊哈!");con ...

  7. java怎么跳出for循环循环_java如何跳出for循环?

    java跳出for循环的方法break continue return break语句 break用于完全结束一个循环,跳出循环体.不管是哪种循环,一旦在循环体中遇到break,系统将完全结束循环,开 ...

  8. java for怎么跳出_java跳出for循环的方法

    java跳出for循环的方法 发布时间:2020-06-26 15:56:42 来源:亿速云 阅读:193 作者:Leah 这篇文章将为大家详细讲解有关java跳出for循环的方法,文章内容质量较高, ...

  9. java直接跳出for循环_java如何跳出for循环?

    java跳出for循环的方法break continue return break语句 break用于完全结束一个循环,跳出循环体.不管是哪种循环,一旦在循环体中遇到break,系统将完全结束循环,开 ...

最新文章

  1. 实验九 根据材料编程(改变字体颜色)
  2. 高通孟樸:5G+AI将会是移动互联网主流趋势
  3. 苹果手机查看python代码的免费软件-Python实现抢购IPhone手机
  4. Windows Phone中Map控件由浅及深
  5. Lync 2010升级到Lync 2013POC计划-过程!
  6. Win10设置屏保时间
  7. 毕业设计开发日志,基于ARM的嵌入式人脸识别系统的设计与实现
  8. 练习题︱豆瓣图书的推荐与搜索、简易版知识引擎构建(neo4j)
  9. 静态网页项目开发基础
  10. LeCo-82.删除排序链表中的重复元素(二)
  11. 硬件知识--单片机高精度电流测量电路
  12. python调用shell命令
  13. 派件系统c语言实验报告,物流规划与优化选址实验报告.doc
  14. harmonyos导师姓名,HarmonyOS开发者创新大赛颁奖礼 见证星星之火燃爆盛夏
  15. MMU简单处理TLB例外
  16. kubernetes endpoint 代码阅读
  17. Android,firefly3399开发板,arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题
  18. android线程作用,Android线程介绍
  19. JAVA简易推箱子小游戏制作
  20. 联想移动员工内幕消息,资深评论

热门文章

  1. JavaBase入门
  2. Spring面向切面编程(AOP)详解
  3. 使用ffmpeg dxva技术解码
  4. 通过交互式网页爬取,抓取天猫商品价格
  5. weui uploader php,weui表单 uploader上传组件使用教程
  6. 2022.4.30每日一题
  7. Linux——安装mysql数据库
  8. .NET平台框架整理(1)
  9. 专业的iPhone/iPad解锁工具:Tenorshare 4uKey中文版
  10. 网站出现403 Forbidden错误的原因以及怎么解决的方法