先看下以下方法的打印结果以及返回值:
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)才该对,达到未重构时的效果。
希望各位同仁们遇到for循环里面需要return;或return true/false;时,一定要谨慎哈~
相关推荐
java跳出循环break;return;continue使用 . java跳出循环break;return;continue使用 . java跳出循环break;return;continue使用
在网上看了一些for循环的效率问题,发现基本上都是一些理论的东西,且大多都是Copy来的,前后文自相矛盾。自己做了一个例子,来看看他们的效率 1.最慢 private long getTime1() { long time = 0; int count = 0;...
### for 循环练习知识点详解 #### 1. 肇事车辆车牌号问题 - **目标**: 使用 `for` 循环找出符合特定条件的四位数车牌号码。 - **条件**: - 前两位数字相同。 - 后两位数字相同,并且与前两位不同。 - 该四位数是...
在C语言中,嵌套for循环是一种非常重要的编程结构,它允许我们在一个循环体内部再包含另一个循环。这种技术在处理二维数组、矩阵运算、图形绘制、递归算法以及复杂数据结构遍历等方面有着广泛的应用。现在,我们将...
return [lambda x: x**i for i in range(1,5,2)] print([f(3) for f in foo()]) 伙伴们,你们认为这里产生的结果是什么呢?我们再来看下这题的变体: 代码:2 def foo(): functions=[] for i in range(1,5,2): ...
### Smarty模板中的for循环知识点详解 #### 一、背景与问题描述 在使用Smarty模板引擎进行Web开发的过程中,经常会遇到需要在模板文件中实现循环逻辑的情况。然而,默认情况下,Smarty只提供了针对数组的循环功能...
### JDK 1.5 中增强 for 循环详解 #### 引言 随着 Java 技术的不断发展,为了提高开发效率、简化代码编写并增强可读性,JDK 1.5 引入了一系列的新特性,其中就包括了增强 for 循环(Enhanced For Loop),也被称作...
### C语言中的for循环程序流程图详解 #### 一、引言 在计算机编程领域,循环结构是构建复杂逻辑的基础之一。其中,`for`循环因其简洁性和灵活性而在多种编程语言中广泛应用,尤其是在C语言中。本文将详细介绍C语言...
在编程语言的编译器设计领域,FOR循环语句的翻译是至关重要的环节。这个过程涉及到将高级语言的FOR循环转换成低级机器语言或中间表示形式,以便计算机能够理解和执行。这里我们将深入探讨递归下降法和输出四元式在...
在C语言编程中,`for`循环语句是一种非常常用且强大的控制流程结构,它用于重复执行一段代码,直到满足特定条件为止。本题重点在于使用`for`循环语句处理数组并从键盘获取用户输入。下面将详细介绍这两个知识点。 *...
通过`for`循环打印斐波那契数列的前100项。斐波那契数列定义为:第一项与第二项均为1,后续每一项都是前两项之和(如1, 1, 2, 3, 5, 8, 13, 21...)。 ```java int first = 1, second = 1; for (int i = 0; i ; i++...
Java中break、continue、return在for循环中的使用 Java是一种流行的编程语言,它的循环控制语句在编程中扮演着非常重要的角色。在Java中,break、continue、return是三种常用的循环控制语句,它们在for循环中的...
为了防止这种情况,我们需要了解如何在VC2010中实现异步多线程,并在for循环中进行安全的数据输出。 首先,理解多线程的基本概念至关重要。多线程是指在一个进程中同时执行多个不同的代码段,每个代码段称为一个...
当`i`的值达到101时,循环条件`i 不满足,循环结束。 接下来,我们分析一下for循环语句的变体。for循环可以嵌套使用,即在一个for循环的循环体内再使用一个for循环,这在处理多维数据结构时非常有用。此外,for循环...
本资源"**C语言for循环源代码.rar**"显然是一个包含有关C语言for循环实现的源代码文件。下面,我们将详细讨论C语言中的for循环及其在实际编程中的应用。 for循环是C语言中三种基本循环结构之一(另外两种为while和...
C语言中的for循环 C语言中的for循环是一种常用的循环结构,它允许程序按照一定规律重复执行一段代码块。for循环的基本语法包括初始化表达式、循环条件表达式和循环后表达式三个部分。下面将详细介绍for循环的语法、...
这个描述中的链接指向了CSDN博客上的一篇文章,尽管我们无法直接访问该文章,但可以基于常规的`for`循环知识进行解释。 `for`循环通常用于执行固定次数的操作。它的基本语法结构通常包括初始化、条件检查和迭代三个...
这适用于单条数据的处理场景,如果是在for循环中处理多条数据,依次处理每条数据的异步操作呢? 思路:还是利用Promise的then()来进行链式操作,每次循环的时候往Promise后添加一个新的then(),这样就可以保证上一个...
C语言的`for`循环是程序设计中一种非常重要的控制结构,它允许程序员简洁地实现重复执行一段代码,直到满足特定条件为止。本教程将详细解释`for`循环的使用和特性。 首先,`for`循环通常由三个表达式组成,它们在...