2013-01-15 99 views
0

我想爲變量分配一個默認值,如果該變量包含一個空字符串。我用下面的代碼,但他們沒有工作了:如何檢查空字符串

if (d.lat.trim().isEmpty()) 
    latt = 9.0819990; 
else { 
    latt = Double.valueOf(d.lat.trim()).doubleValue(); 
} 

上面的代碼導致錯誤:

cannot find symbol 
symbol : method isEmpty() 
location: class java.lang.String 

然後我用

if (" ".equals(d.lat.trim())) 
    latt = 9.0819990; 
else { 
    latt = Double.valueOf(d.lat.trim()).doubleValue(); 
} 

上面跳碼if部分,並嘗試將空字符串轉換爲double,從而引發有關空字符串的錯誤。

那麼,我做錯了什麼?

+3

'Double.valueOf(STR).doubleValue()'可縮短至'Double.parseDouble(STR)' – beny23

+0

它可以被進一步縮短到'LATT =新雙(STR)' –

回答

3

空字符串是""而不是" "(注意引號之間沒有空格)。

1

第一個塊對我來說看起來不錯,但是你可能正在用Java5進行編譯,但它沒有String.isEmpty()方法。

1

如果您使用String.length() == 0而不是String.isEmpty()會怎麼樣?

1

Apache StringUtils是解決您正在實施的驗證問題的一種非常好的方法。儘管如此,你不能使用.isEmpty方法的錯誤看起來很奇怪,你使用的是什麼版本的JDK?嘗試使用最新版本(JDK 7)或至少使用JDK 6更改JDK的版本。

還要記住,空字符串由「」表示,只是引號沒有任何空格。看來你正在驗證的方式沒問題。你可以嘗試這樣的事情。

if (d.lat.trim().isEmpty() || d.lat.length == 0) 
    latt = 9.0819990; 
else { 
    latt = Double.valueOf(d.lat.trim()).doubleValue(); 
    // or as mentioned before: latt = Double.parseDouble(d.lat.trim()); 
}