Java 中的嵌套 return 语句
Nested return statements in Java
取自enthuware.com
以下哪个 max() 方法的实现会正确 return 最大值?
选项之一及不正确的解释:-
我的问题是为什么这是错误的?有规律可循吗?
int max(int x, int y){
return(
if(x > y){
return x;
} else {
return y;
}
);
}
去掉第一个return和相应的括号就可以了。
My question is why is this wrong ? Is there a rule to follow ?
是的,规则被称为"Language grammar and syntax."
正如您自己发现的,只有以下代码的语法是正确的。
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;
}
"Nested returns" 没有意义。一旦 java 解释器遇到 "return" 语句,它只是从函数中寻找 return 的值并立即退出函数。 (当然也有例外,比如 finally 块。)
当你有一个 X return 类型的方法时,每个 return 语句后面必须跟一个可以计算为 X 的表达式。这在你的代码中不是这种情况,因为if
语句没有价值。
最接近您要执行的操作的是三元运算符:
int max(int x, int y)
{
return (x > y)?x:y;
}
取自enthuware.com
以下哪个 max() 方法的实现会正确 return 最大值?
选项之一及不正确的解释:- 我的问题是为什么这是错误的?有规律可循吗?
int max(int x, int y){
return(
if(x > y){
return x;
} else {
return y;
}
);
}
去掉第一个return和相应的括号就可以了。
My question is why is this wrong ? Is there a rule to follow ?
是的,规则被称为"Language grammar and syntax."
正如您自己发现的,只有以下代码的语法是正确的。
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;
}
"Nested returns" 没有意义。一旦 java 解释器遇到 "return" 语句,它只是从函数中寻找 return 的值并立即退出函数。 (当然也有例外,比如 finally 块。)
当你有一个 X return 类型的方法时,每个 return 语句后面必须跟一个可以计算为 X 的表达式。这在你的代码中不是这种情况,因为if
语句没有价值。
最接近您要执行的操作的是三元运算符:
int max(int x, int y)
{
return (x > y)?x:y;
}