2013-08-28 5 views
6

* value.getFloat( "Value_Quotient"、quotient_Float)== null *の場合、問題が発生しているようです。これをどうやって解決するのですか?Javaでは、浮動小数点変数が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(); 
    }   
} 
+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オブジェクトは、データ型がfloatのオブジェクト表現としてnullであることが確認できます。 A FloatオブジェクトはキャピトルFで表され、floatデータ型は小さいfを持ちます。 Javaのプリフォームを使用すると、簡単にバックと第2の間で切り替えることができることを意味オートボクシング、すなわち:

float number = 0.56f; 
Float object = number; 

それとも周りの他の方法は:

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

はまた、メソッドにFloatオブジェクトを渡すことができますfloatのデータ型が期待されている場合、またはその逆の場合

何らかの理由でデフォルト値のdoesntの仕事をチェックした場合、これはあなたがnullをFloatをチェックすることができます。

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

有用かもしれない点(Java 8)。

Floatオブジェクトは、プリミティブフロートに割り当てることができます。あなたのFloatオブジェクトがプリミティブにそれを割り当てることNPE

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

だから

一つ、ここで注意する原因になりますよりも、nullの場合は

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

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

:次に浮かんプリミティブは、0次のように確認することができますより多くのことは、明らかにあなたは==演算子をFloatオブジェクトで使うことができます。なぜなら、autounboxingが起こるからです。

Float floatObj = new Float(0.0f); 

    if (floatObj == 0) { 
     System.out.println("floatObj is 0"); // will work 
    } 
関連する問題