2014-12-04 26 views
0

我無法使下面的查詢方法正常工作。我需要它返回,如果isRestricted所有報告限制在狀態。如果isClosed,則返回關閉狀態的所有報告。它適用於isRestricted,返回處於受限狀態的所有報告。它也適用於返回除限制和關閉之外的所有內容,這是很好的,但只是返回if的所有條件。現在,如果我將isClosed條件移至頂端,那麼它適用於isClosed,但不適用於isRestricted。我錯過了什麼?java條件如何確保它檢查所有語句

protected String getRestrictedOrClosedTerm() { 
    if (isRestricted == null || "false".equals(isRestricted)) { 
     return "-status:restricted -status:closed "; 
    } 
    if (isRestricted.isEmpty()) { 
     return ""; 
    } 
    if ("true".equals(isRestricted)) { 
     return "+status:restricted "; 
    } 
    if (isClosed == null || "false".equals(isClosed)) { 
     return "-status:closed "; 
    } 
    if (isClosed.isEmpty()) { 
     return ""; 
    } 
    if ("true".equals(isClosed)) { 
     return "+status:closed "; 
    } 

    return ""; 
} 

它就像它是在停止:

if ("true".equals(isRestricted)) { 
     return "+status:restricted "; 
    } 

有趣的是,如果我用這個,我得到想要的結果,但不知道爲什麼:

protected String getRestrictedOrClosedTerm() { 
    if ("true".equals(isClosed)) { 
     return "+status:closed "; 
    } 
    if ("true".equals(isRestricted)) { 
     return "+status:restricted "; 
    } 
    if (isRestricted == null || "false".equals(isRestricted)) { 
     return "-status:restricted -status:closed "; 
    } 
    return ""; 
} 
+4

使用'StringBuilder'和追加無論是相關的,並返回其'的ToString()' – fge 2014-12-04 20:32:31

+0

你能不能給我一個例子嗎?對不起,我從來沒有使用過StringBuilder。 Java newb在這裏。 – Jason 2014-12-04 20:37:11

+0

'return'結束該功能。所以只有你的一個ifs被執行 – jlars62 2014-12-04 20:43:53

回答

2

當您使用return在一個方法中,它返回的值退出該方法。如果你使用像一個StringBuilder,你可以看到所有的輸出:

 protected String getRestrictedOrClosedTerm() 
     { 
      StringBuilder sb = new StringBuilder(); 
      if (isRestricted == null || "false".equals(isRestricted)) { 
       sb.append("-status:restricted -status:closed\n"); 
      } 
      if (isRestricted.isEmpty()) { 
       sb.append("empty\n"); 
      } 
      if ("true".equals(isRestricted)) { 
       sb.append("+status:restricted\n"); 
      } 
      if (isClosed == null || "false".equals(isClosed)) { 
       sb.append("-status:closed\n"); 
      } 
      if (isClosed.isEmpty()) { 
       sb.append("empty\n"); 
      } 
      if ("true".equals(isClosed)) { 
       sb.append("+status:closed\n"); 
      } 

      return sb.toString(); 
     }