Java中的嵌套返回语句

时间:2015-02-08 13:16:37

标签: java nested return

取自enthuware.com

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

其中一个选项和解释为何不正确: - 我的问题是为什么这是错的?是否有规则要遵循?

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

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

2 个答案:

答案 0 :(得分:3)

  

我的问题是为什么这是错的?是否有规则要遵循?

是的,该规则称为“语言语法和语法。”


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

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”语句,它只是查找返回函数的值,并立即退出函数。 (当然有例外,比如最后阻止。)

答案 1 :(得分:1)

当你有一个带有X返回类型的方法时,每个return语句后面必须跟一个可以计算为X的表达式。在你的代码中不是这种情况,因为if语句没有值

你要做的最接近的是三元运算符:

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