2012-12-18 67 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 +“ ” ;' –