2013-08-28 79 views
6

看来,当涉及到* value.getFloat(“Value_Quotient”,quotient_Float)== null *时,它遇到了一个问题。我该如何解决?在Java中,如何检查float变量是否为空?

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(); 
    }   
} 
+9

'float'不能为null。 'Float'可以是'null'。您的变量原始类型或引用类型是什么? –

+0

http://docs.oracle.com/javase/tutorial/java/data/autoboxing.html –

+0

这很原始。 –

回答

18

floatprimitive数据类型,而不是一个object。空对象用于对象。对于基元,你应该使用默认值检查。对于float,默认值是0.0f。

+0

[原始数据类型](http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) – CRUSADER

4

还有一个Float类,您可以使用。可以检查Float对象的null作为其float数据类型的对象表示形式。 A Float对象由国会大厦F表示,并且float数据类型具有小f。 Java的瓶坯自动装箱,这意味着你可以轻松地切换回和第四两者之间,即:

float number = 0.56f; 
Float object = number; 

或者周围的其他方式:

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

您也可以通过一个Float对象到方法数据类型为float,或者相反。

如果检查默认值不管什么原因都不起作用,这将允许您检查Float为空。

if (object != null) { 
    // do what you want to do 
} 
0

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

浮点对象可以分配给一个浮点型图元。然后浮原始可以是0检查这样的:

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

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

但是,如果你Float对象为null,比其分配给原始将导致NPE

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

所以,要小心这里

一更多的事情,显然你可以在Float对象上使用==运算符,因为autounboxing会发生。

Float floatObj = new Float(0.0f); 

    if (floatObj == 0) { 
     System.out.println("floatObj is 0"); // will work 
    } 
相关问题