9

好像说到*value.getFloat("Value_Quotient", quotient_Float)==null*,就遇到了问题。我该如何解决?

private void Store() {
    quotient_Float = posture_error/time;
    if(value.getFloat("Value_Quotient", quotient_Float)==null || quotient_Float < value.getFloat("Value_Quotient", quotient_Float))
    {
        editor.putFloat("Value_Quotient", quotient_Float);
        editor.commit();
    }           
}
4

3 回答 3

29

float是一种primitive数据类型,而不是object. 空检查用于对象。对于原语,您应该使用默认值检查。对于浮点数,默认值为 0.0f。

于 2013-08-28T15:42:52.703 回答
5

您还可以使用Float类。Float可以检查对象null作为其float数据类型的对象表示。一个Float对象用大写字母 F 表示,float数据类型有一个小的 f。Java 执行自动装箱,这意味着您可以轻松地在两者之间来回切换,即:

float number = 0.56f;
Float object = number;

或者反过来:

Float object = new Float(1.43);
float number = object;

您还可以将Float对象传递给需要float数据类型的方法,或者反过来。

如果由于某种原因检查默认值不起作用,这将允许您检查 aFloat是否为空。

if (object != null) {
    // do what you want to do
}
于 2013-08-28T17:40:59.587 回答
1

一些可能有用的点(Java 8)。

可以将浮点对象分配给浮点基元。然后可以像这样检查浮点原语 0:

    Float floatObj = new Float(0);
    float floatPrim = floatObj;

    if (floatPrim == 0) {
        System.out.println("floatPrim  is 0"); // will display message
    }

但是,如果您的 Float 对象为空,则将其分配给原语将导致 NPE

    Float floatObj = null;
    float floatPrim = floatObj; //NPE

所以这里要小心

还有一件事,显然您可以在 Float 对象上使用 == 运算符,因为会发生自动拆箱。

    Float floatObj = new Float(0.0f);

    if (floatObj == 0) {
        System.out.println("floatObj  is 0"); // will work 
    }
于 2018-01-05T14:34:05.087 回答