先看下以下方法的打印结果以及返回值:public static void main(String[] args) {

System.out.println("返回值:" + testResult());

}

public static boolean testResult() {

for(int i=1; i<=5; i++) {

System.out.println("-------------->开始:" + i);

if(i == 3) {

return true;

}

System.out.println("-------------->结束:" + i);

}

return true;

}

打印结果:

-------------->开始:1

-------------->结束:1

-------------->开始:2

-------------->结束:2

-------------->开始:3

返回值:true,说明在for里return一个值的话相当于退出循环。

1)假设我们对testResult方法进行重构,抽离出for里面的逻辑到一个单独的方法:public static boolean testResult() {

for(int i=1; i<=5; i++) {

test1(i);

}

return true;

}

public static void test1(int i) throws NullPointerException{

System.out.println("-------------->开始:" + i);

if(i == 3) {

return;

}

System.out.println("-------------->结束:" + i);

}

同样放在main方法中。只不过testResult方法的for循环里直接调的重构的方法,打印结果:

-------------->开始:1

-------------->结束:1

-------------->开始:2

-------------->结束:2

-------------->开始:3

-------------->开始:4

-------------->结束:4

-------------->开始:5

-------------->结束:5

返回值:true

这说明,test1(i)方法用return;语句试图走到i=3的时候中断; 但是循环还是走完了。

2)不妨给for循环里调用的方法一个返回值,如下:public static boolean testResult() {

for(int i=1; i<=5; i++) {

return test2(i);

}

return true;

}

public static boolean test2(int i) throws NullPointerException{

System.out.println("-------------->开始:" + i);

if(i == 3) {

return true;

}

System.out.println("-------------->结束:" + i);

return false;

}

打印结果如下:

-------------->开始:1

-------------->结束:1

返回值:false

这说明,在for里调用一个有boolean返回值的方法,会让方法还没走到i=3就断掉,返回一个boolean值。

3)在for循环里需要根据条件return一个boolean值时。for循环里面的代码若需要重构成一个方法时,应该是有返回值的,但这个返回值不能是boolean,我们不妨用String代替,而在for循环里面用返回的String标记来判断是否退出循环~~

改造如下:public static boolean testResult() {

for(int i=1; i<=5; i++) {

String flag = test3(i);

if("yes".equals(flag)) {

return true;

}

}

return true;

}

public static String test3(int i) throws NullPointerException{

System.out.println("-------------->开始:" + i);

if(i == 3) {

return "yes";

}

System.out.println("-------------->结束:" + i);

return "no";

}

打印结果:

-------------->开始:1

-------------->结束:1

-------------->开始:2

-------------->结束:2

-------------->开始:3

返回值:true

说明达到了最初未对for循环里面的代码进行重构时的效果~

以上的小例子是我在对类似代码进行重构时报错的经验小结,因为实际代码里,for里面的代码重复了好几次,但是又因为for里面的代码需要根据判断条件return一个boolean值。在重构的过程中,我先是改成test1(i),再改成test2(i), 最后改成test3(i)才该对,达到未重构时的效果。

php 循环中return,php中for循环遇上return的示例代码分享相关推荐

  1. python 去重 字典_python按照list中字典的某key去重的示例代码

    一.需求说明 当我们写爬虫的时候,经常会遇到json格式的数据,它通常是如下结构: data = [{'name':'小K','score':100}, {'name':'小J','score':98 ...

  2. python绘制三维曲面图-python中Matplotlib实现绘制3D图的示例代码

    Matplotlib 也可以绘制 3D 图像,与二维图像不同的是,绘制三维图像主要通过 mplot3d 模块实现.但是,使用 Matplotlib 绘制三维图像实际上是在二维画布上展示,所以一般绘制三 ...

  3. python中if else语句_python 中if else 语句的作用及示例代码

    引入:if-else的作用,满足一个条件做什么,否则做什么. if-else语句语法结构 if 判断条件: 要执行的代码 else: 要执行的代码 判断条件:一般为关系表达式或bool类型的值 执行过 ...

  4. python if else语句例子,python 中if else 语句的作用及示例代码

    引入:if-else的作用,满足一个条件做什么,否则做什么. if-else语句语法结构 if 判断条件: 要执行的代码 else: 要执行的代码 判断条件:一般为关系表达式或bool类型的值 执行过 ...

  5. java应用程序接口批量访问_spring中使用mybatis实现批量插入的示例代码

    有3种实现方式:foreach,spring事务,以及ExecutorType.BATCH. 1. foreach方式 这种方式实际是对SQL语句进行拼接,生成一个长长的SQL,对很多变量进行绑定.如 ...

  6. c语言for循环中i,C语言for循环语句中a[i][j]和a[j][i]有什么区别

    匿名用户 1级 2014-04-27 回答 可以将i 理解成行,j 理解成列,a[i][j]和a[j][i]取值不同 比如,假设一个3维数组(你的是5x5),数值分别为: 1 2 3 4 5 6 7 ...

  7. 如何在Java中处理ConcurrentModificationException? 在循环中从ArrayList中删除元素时要当心...

    从Java中从ArrayList中删除元素时常见的问题之一是ConcurrentModificationException. 如果您对索引使用经典的for循环或增强的for循环,并尝试使用remove ...

  8. python中for循环加速_如何让Python代码加速运行?

    Python 是一种脚本语言,相比 C/C++ 这样的编译语言,在效率和性能方面存在一些不足.但是,有很多时候,Python 的效率并没有想象中的那么夸张.本文对一些 Python 代码加速运行的技巧 ...

  9. linux 如何跳出循环函数,(三)Linux Shell编程——Shell常用命令(输出、判断、循环、函数、包含)(示例代码)...

    3. 常用命令 3.1 输出 3.1.1 echo命令 echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串.命令格式: echo arg name="coding" ...

最新文章

  1. Struts2自定义类型转换器、自定义拦截器和用户输入数据的验证
  2. java spring cloud版b2b2c社交电商spring cloud分布式微服务:分布式配置中心
  3. 用 VC++ 2008 编写 Windows Service(系统服务)
  4. [UE4]自动旋转组件
  5. express 4 简单实现自动注册路由功能
  6. 深度学习(五十七)tensorflow andorid yolo物体检测测试
  7. 代码示例_标准IO_fseek
  8. React躬行记(8)——样式
  9. 什么是SAP?SAP系统基础界面操作说明
  10. python 爬虫 糗百成人
  11. java多线程框架 netty,JavaSocket编程之Netty框架线程模型
  12. lottie动画android,Lottie动画简介
  13. 64K方法数限制原理与解决方案总结
  14. 游戏开发物理引擎PhysX研究系列:通过Unity中的物理系统学习Physx指引贴
  15. Android:Gradle 依赖相关
  16. ZYNQ-双核AMP通信(一)
  17. 线段树开4N空间证明
  18. app中jeDate日期控件的使用
  19. IGMP Snooping协议技术总结
  20. [人物]一个预言家的命运:忽悠了马云的“骗子”,风口上的先知

热门文章

  1. mysql5.6 慢查询_MySQL5.6 如何优化慢查询的SQL语句
  2. 数据结构与算法的时间空间复杂度
  3. 手机通讯录备份代码实现一
  4. 如何获取android源码
  5. set identity_insert on 不起作用
  6. WPF中如何重新定义Main函数
  7. 时间 ,空间 ,物质
  8. docker删除为none的镜像
  9. 邓迎春绘画201702作品5
  10. decode和case的用法