2013-08-03 57 views
0

爲什麼沒有這種結構可以接受嗎?無論如何,它返回一個布爾值對嗎?Java的嵌套相關查詢

public boolean a() 
{ 

    if(condition) 
    { 
     if(condition) 
     { 
      if(condition) 
      { 
       return true; 
      } 
     } 
    } 

} 
+0

如果所有要退回的控制研究流動導致的值是可以接受的 –

+1

@迪克森:你應該明白,如果,如果條件不滿足,它不會返回任何東西之一。 – namalfernandolk

回答

4

這是無效的,因爲有可能沒有任何返回。你的方法被聲明爲返回一個布爾值,所以它必須在方法結束之前在代碼的某個點返回一個布爾值,而不管內部邏輯如何。如果您的if語句if (condition)爲false,則該方法沒有其他return語句,因此代碼甚至不會編譯。因爲你需要做一回一些默認值(return

public boolean a() 
{ 
    if(condition) 
    { 
     if(condition) 
     { 
      if(condition) 
      { 
       return true; 
      } 
     } 
    } 
    return false; 
} 
3

無效:要解決這個問題,添加一個「默認」的返回值。

什麼if條件不滿足?

有效的是:

public boolean a() 
    { 

     if(condition) 
     { 
      if(condition) 
      { 
       if(condition) 
       { 
        return true; 
       } 
      } 
     } 
    return false; 

    } 

作爲一個側面說明,爲了使你的代碼模式可讀的,我建議

if(condition && condition && condition) 
     { 
     return true; 
     } 
    return false; 

喜歡閱讀jls-14.17

0

雖然該方法返回true當滿足條件,當條件不是 satisf它沒有指定一個返回值IED。該方法應該覆蓋所有代碼路徑(讀取條件語句)。

0

正如上述回答正確的狀態,你絕對在Java中返回的東西。 C並不在乎。

爲了避免這種情況,我會建議減少築巢做這樣的事情

boolean value=false; //default return 
if(cond && cond) 
    return value; 
if(cond) 
    return false; //if you want to be more specific 
if(cond) 
    value=true; 

return value; 

這樣的值被返回無論是什麼水平。從有利的一面,可讀性增加