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部分并尝试将空字符串转换为双精度,从而引发有关空字符串的错误。

所以,我做错了什么?

4

5 回答 5

3

空字符串是"",不是" "(注意引号之间没有空格)。

于 2013-01-15T14:44:56.957 回答
3

NPE 是正确的。
但我可以推荐 Apache 吗StringUtils
http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/StringUtils.html#isBlank(java.lang.String )

检查字符串是否为空格、空 ("") 或 null。

 StringUtils.isBlank(null)      = true
 StringUtils.isBlank("")        = true
 StringUtils.isBlank(" ")       = true
 StringUtils.isBlank("bob")     = false
 StringUtils.isBlank("  bob  ") = false
于 2013-01-15T14:48:06.013 回答
1

第一个块对我来说看起来不错,但您可能正在使用 Java5 进行编译,它还没有该String.isEmpty()方法。

于 2013-01-15T14:45:03.583 回答
1

如果你使用String.length() == 0代替String.isEmpty()呢?

于 2013-01-15T14:46:31.053 回答
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());
}
于 2013-01-15T15:02:12.717 回答