Java中的嵌套返回语句



摘自enthuware.com

以下哪种max()方法的实现将正确返回最大值?

其中一个选项及其错误原因的解释:-我的问题是为什么这是错误的?有规则可循吗?

int max(int x, int y){ 
  return(
    if(x > y){ 
      return x; 
    } else { 
      return y; 
    }
   );
} 

如果第一个返回和相应的括号被移除,它将起作用。

我的问题是为什么这是错误的?有规则可循吗?

是的,这个规则叫做"语言语法和语法"


正如您自己发现的,只有以下代码具有正确的语法。

int max(int x, int y){ 
    if(x > y){
        return x;
    } else {
        return y;
    }
}

或者更好的是,

int max(int x, int y){ 
    return x > y? x: y;
}

"嵌套返回"没有意义。一旦java解释器遇到"return"语句,它只需从函数中查找要返回的值,并立即退出函数。(当然也有例外,比如finally block。)

当您有一个返回类型为X的方法时,每个返回语句后面都必须有一个可以计算为X的表达式。代码中的情况并非如此,因为if语句没有值。

最接近您尝试做的事情是三元运算符:

int max(int x, int y)
{
    return (x > y)?x:y;
} 

最新更新