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 语句。

 

编译器非常聪明,什么都逃不过它的法眼哦~

大家编程的时候一定要思维严谨哦~

posted @ 2019-11-02 20:24  水清梦蓝  阅读(3247)  评论(0)    收藏  举报