2

我是 Java 新手,正在学习一些课程。但是,在下面的代码中,我在尝试编译时收到错误“Unreachable statement”。关于我做错了什么的任何指示?

public String getDeliveredList() {
   int count = 0;
   while (count < deliveredList.size()){
       return ("Order # " + count + deliveredList.get(count).getAsString());
       count++;
   }
}
4

2 回答 2

10

从函数返回后,从逻辑上讲,在那之后它不能再执行任何操作——count++永远不会到达该语句。

while (count < deliveredList.size()){

   // function always ends and returns value here
   return ("Order # " + count + deliveredList.get(count).getAsString());

   // this will never get run
   count++;
}
于 2012-11-30T02:01:31.690 回答
0

如果您从函数返回,那么在函数返回点之后的任何语句基本上都是无法访问的语句,编译器将在此类语句上发出错误。

但是,尽管在 return 之后编写了语句,但以下代码不会发出错误

void max(int a,int b)
{
    if(a>b) 
    {
        System.out.println(a+" is greater");
        return;
    }

    System.out.println(b+" is greater");
    return;
}

这是因为第一个 return 语句是在嵌套范围内编写的,并且在函数范围内不会立即可见。当 a>b 时,程序执行只会通过第一个 return 语句。如果不是这样,则永远不会执行该代码块。因此,尽管返回后有语句,但代码是可编译的;

于 2012-11-30T04:05:55.977 回答