摘自enthuware.comJava中的嵌套返回語句
max()方法的下列哪個實現將正確返回最大值?
爲什麼它是不正確的選項和解釋之一: - 我的問題是爲什麼這是錯的?是否有規則可循?
int max(int x, int y){
return(
if(x > y){
return x;
} else {
return y;
}
);
}
如果第一個返回和對應的括號被刪除,它會工作。
摘自enthuware.comJava中的嵌套返回語句
max()方法的下列哪個實現將正確返回最大值?
爲什麼它是不正確的選項和解釋之一: - 我的問題是爲什麼這是錯的?是否有規則可循?
int max(int x, int y){
return(
if(x > y){
return x;
} else {
return y;
}
);
}
如果第一個返回和對應的括號被刪除,它會工作。
當你有一個帶有X返回類型的方法時,每個return語句後面必須跟一個可以被評估爲X的表達式。這不是你的情況代碼,因爲if
聲明沒有價值。
最接近的事到你正在嘗試做的是三元運算符:
int max(int x, int y)
{
return (x > y)?x: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塊一樣)
,所以你不能嵌套的回報? – user4702831 2015-02-08 13:20:49
@ user3258396:內嵌迴應。 – SuperSaiyan 2015-02-08 13:24:27
爲什麼if語句沒有值?它的值我認爲是一個整數 - 無論是x或y取決於if語句的結果。我意識到我錯了,但不太明白這個解釋。 – user4702831 2015-02-08 13:40:29
@ user3258396「if語句」是一個語句。這不是一個表達。只有表達式纔有價值。 – Eran 2015-02-08 13:50:02