2012-12-18 65 views
3

這工作:Java:如果結果爲空,如何分配給變量?

String address1 = HtmlUtil.escape(rs.getString("address1")); 

...但我不想顯示 「空」。所以我試過了,這是行不通的:

String address1 = HtmlUtil.escape(rs.getString("address1") || ""); 

是最好的選擇使用這個:?

String address1 = HtmlUtil.escape(rs.getString("address1")); 
if (address1 == null) address1 = ""; 

回答

4
String address1 = HtmlUtil.escape(rs.getString("address1")); 
if (address1 == null || address1.equals("null")) { 
    address1 = ""; 
} 
+0

因爲數據庫也包含壞字符串,我會接受這個答案。 –

+1

如果你必須從你的ResultSet中獲取多個變量,並且你需要檢查null(或「null」),我會建議編寫一個方法,你可以重用其他變量,也許可以把它包裝在一個ResultSetWrapper中,你的代碼乾淨。 –

+0

我也建議你擺脫你的數據庫/應用程序中的「空」字符串。這是不必要的開銷。 –

6

使用三元運算符,您可以指定用一行代碼值:

String address1 = (rs.getString("address1") != null) ? 
        HtmlUtil.escape(rs.getString("address1")) : ""; 
+1

這是不好的做法,使相同的調用方法(在這裏,' rs.getString');改用臨時變量。 – Vulcan

+1

@Vulcan我只是想給OP一個想法。當然,他/她可以使用臨時變量。但這與我的答案的準確性無關,你不應該低估。 – Juvanis

+0

我喜歡三元運算符,但在這種情況下,我的解決方案更短,更易讀,更高效。 –

1
String address1 = HtmlUtil.escape(rs.getString("address1")) == null ? "" : HtmlUtil.escape(rs.getString("address1")); 

如果你想醜陋的一行:-)

0

嘗試類似這樣的

<c:when test="${empty rs.getString("address1")}"> 
    ... 
</c:when> 
<c:otherwise> 
    ..... 
</c:otherwise> 
1

使用臨時變量僅調用HtmlUtil.escape一次。然後檢查null並分配給address1

String tempAddress = HtmlUtil.escape(rs.getString("address1")); 
String address1 = tempAddress != null ? tempAddress : ""; 
+0

我寧願不創建額外的變量。 –

1

解決方案:

String address1 = HtmlUtil.escape(rs.getString("address1")); 
if (address1 == null) address1 = ""; 
+0

我想這是最有效的解決方案。 –

+0

它不工作... –

0

你可以試試這個:

String address1 = ""; 
if(HtmlUtil.escape(rs.getString("address1") != null && !(HtmlUtil.escape(rs.getString("address1").equalsIgnoreCase("null"))){ 
address1 = HtmlUtil.escape(rs.getString("address1")); 
} 
+0

你真的不需要呼叫和逃避三次,但這看起來像我的最終代碼:'if(address1!= null && address1!=「」)address_tip + = address1 +「 」 ;' –