如何检查双精度数值是否为空

7

我将尝试从json中获取Double值,想要询问如何检查Double值是否为空?

这是我初始化的方式:

private static 

final String kartu_xcord = "xcord";
    private static final String kartu_ycord = "ycord";
    ouble xcord,ycord;

这是我解析JSON的方法:

xcord = c.getDouble(kartu_xcord);
ycord = c.getDouble(kartu_ycord);

这是我尝试检查 xcord 是否为空的方法:

if (xcord.isNaN()) {
            LinlayNoMap.setVisibility(View.VISIBLE);
        } else {
            linlaymap.setVisibility(View.VISIBLE);
}

我希望有人能够帮助我解决我的问题。谢谢。

你可以尝试这样写:valueOf(xcord).isEmpty(); - Maroun
double 不能为 null。 - Jayamohan
8个回答

18
在Java中,double是一种原始数据类型,它不能为null。Java中有一个Double包装类,可以检查其是否为null。
声明坐标的类型为Double而不是double,并检查Double值是否为null。

我已经将代码更改为Double类型并添加了以下条件:如果 (xcord.isNaN()) { LinlayNoMap.setVisibility(View.VISIBLE); } else { linlaymap.setVisibility(View.VISIBLE); }但是运行后程序崩溃了。 - Aoyama Nanami
当您使用xcord.isNaN()进行检查时,它会告诉您该值是否为数字,但它不会检查是否为空。 - nsgulliver
我检查了我的日志记录,发现在这一行出现了错误:if (xcord.isNaN())。 - Aoyama Nanami
那么我该如何检查它是否为空? - Aoyama Nanami
2
您可以通过使用if(DoubleValue==null){}直接检查Double值,因为Double是Java中的类,而不是原始类型。 - nsgulliver

3
在Java中,double类型不能为null

1
假设您正在使用JSONObject,您可以这样做:
xcord = c.optDouble(kartu_xcord, Double.MIN_VALUE);

if (xcord == Double.MIN_VALUE){
  //xcord is empty
}

Double.MIN_VALUE 可以是任何在正常数据中永远不存在的值。 - william

1

它不能为null或空。这是一个双精度浮点数。也许尝试使用Double包装类?


所以我不能设置条件来检查它吗?因为如果xcord返回空值,我想要创建不同的视图,如果不是空值,就创建另一种视图。 - Aoyama Nanami
如果不存在“空值”,那么如何检查它?Double对象包装器可以为null,因此您可以使用它来代替。 - Kayaman

1
你可以检查你的json是否有你需要查找的键:
if (c.hasDouble("my_coord")) {
  y_coord = c.getDouble("my_coord");
}

如果y_coord是一个Double(大写D),你可以将其设置为null。
if (c.hasDouble("my_coord")) {
  y_coord = c.getDouble("my_coord");
} else {
  y_coord = null;
}

这当然取决于你使用的 API 读取 JSONhasDouble 方法可能被称为其他名称。我建议你尝试使用 GSON,它非常简单,可以为您处理大部分解析工作。


那我不能设置条件来检查它吗?如你所见,如果xcord返回空值,我想要创建不同的视图,如果不是空值,则创建另一种视图。 - Aoyama Nanami
我已经将变量更改为Double,并进行了以下操作:if (xcord.isNaN()) { LinlayNoMap.setVisibility(View.VISIBLE); } else { linlaymap.setVisibility(View.VISIBLE); }但是它返回了强制关闭的错误。 - Aoyama Nanami

0

你不能检查原始数据类型(double、float、long、int、char、short、byte、boolean)是否为 null。

原始数据类型总是有值的。你只能检查对象的引用是否为 null。每个原始数据类型都有一个包装对象(Double、Float、Long、Integer等),如果你使用这些包装对象,那么你就可以检查是否为 null。

   double c = 2.16;
   Double d = new Double(c);
   if(d != null){
     System.out.println("not null double variable");
   }

0

在Java中,double类型永远不可能为null。 相反,您可以使用Json的hasKey方法来检查您正在解析的项是否包含该值。

c.hasKey("xcord")

所以我不能制定条件来检查它吗?因为如果xcord返回空值,我想要创建不同的视图。 - Aoyama Nanami
如果您坚持使用原始的double类型,那么它是不可为空的。而Double(包装类)则可以为空。 - josephus

-1

使用Double,不要用double。

Double  dValue= someVariable;

if(!dValue.isNaN())
{
 // you code here
}

Not a Number是double的一个非常特定的值,它与空值或缺少值无关。 - Kayaman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接