如果变量包含空字符串,我试图为变量分配一个默认值。我使用了以下代码,但它们没有用完:
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
部分并尝试将空String转换为double,从而抛出有关空字符串的错误。
那么,我做错了什么?
答案 0 :(得分:3)
空字符串为""
,而不是" "
(请注意引号之间没有空格)。
答案 1 :(得分:3)
NPE是正确的
但我可以推荐Apache StringUtils
http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/StringUtils.html#isBlank(java.lang.String)
检查String是否为空格,为空(“”)或为空。
StringUtils.isBlank(null) = true
StringUtils.isBlank("") = true
StringUtils.isBlank(" ") = true
StringUtils.isBlank("bob") = false
StringUtils.isBlank(" bob ") = false
答案 2 :(得分:1)
第一个块对我来说没问题,但你可能正在编译Java5,它还没有String.isEmpty()
方法。
答案 3 :(得分:1)
如果您使用String.length() == 0
代替String.isEmpty()
怎么办?
答案 4 :(得分: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());
}