for循环里使用return语句的陷阱
今天一个同学问我他的java编程的代码有什么问题?总是提示没有return返回语句。下面大家一起来分析下问题在哪里呢?
代码如下所示(简化的代码,不考虑逻辑):
boolean func(int a)
{
for(int i=2; i <= a; i++)
{
if (a%i == 0)
return true;
else
return false;
}
}
代码提示错误:没有return语句。
分析下func这个方法,很显然如果循环体被执行,那么它只会被执行一次,循环体执行后一定会有返回值。因为循环体中的选择结构语句中,不管满足或者不满足if的条件 a%i == 0, 都有return语句, 可是为什么还会提示没有return 语句呢?
那么肯定有一种情况,没有return语句。
首先我们来看下for语句的执行流程。
1: 初始化表达式;
2: 循环条件
3: 操作表达式
4: 循环体(执行语句)
它的执行流程是:
第一步: 执行1
第二步: 执行2, 判断循环条件是否为true,如果是,则执行第三步,否则执行第五步
第三步: 执行4,
第四步: 执行3,然后重复执行第二步
第五步:退出循环
程序流程图如下所示:

看到这里,不难发现问题所在。
虽然我们在循环体中有return语句,但是for循环中的循环体一定会被执行到吗?不一定!
进入for循环式,初始化表达式后,不满足循环条件,不会执行循环体,而是直接跳出循环。 而出现这种情况时,代码中并没有返回语句。
因此会报错: 没有return 语句。
编译器非常聪明,什么都逃不过它的法眼哦~
大家编程的时候一定要思维严谨哦~

浙公网安备 33010602011771号