我是Java的新手,正在完成一些课程作业。但是,在以下代码段中,我在尝试编译时收到错误"无法访问的语句"。关于我做错了什么的任何指示?
public String getDeliveredList() {
int count = 0;
while (count < deliveredList.size()){
return ("Order # " + count + deliveredList.get(count).getAsString());
count++;
}
}
一旦你从函数返回,从逻辑上讲,它不能再执行任何内容——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++;
}
如果你从函数返回,那么函数返回点之后的任何语句基本上都是无法访问的语句,编译器将在此类语句上发出错误。
但是,尽管返回后编写了语句,以下代码也不会发出错误
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 时通过第一个返回语句。如果不是这样,则永远不会执行该代码块。因此,尽管在返回后有语句,但代码是可编译的;