2013-01-15 56 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()); 
}