2013-08-28 11 views
6

Sembra che quando si tratta di * value.getFloat ("Value_Quotient", quotient_Float) == null *, incontra un problema. Come posso risolvere questo?In Java, come si controlla se una variabile mobile è nullo?

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

Un 'float' non può essere' null'. Un 'Float' può essere' null'. La tua variabile è di tipo primitivo o di riferimento? –

+0

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

+0

È primitivo. –

risposta

18

float è un tipo di dati primitive e non un object. il controllo null viene utilizzato per gli oggetti. Per le primitive si dovrebbe usare il controllo dei valori di default. Per float il valore predefinito è 0.0f.

+0

[tipo di dati primitivi] (http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) – CRUSADER

4

Esiste anche una classe Float che è possibile utilizzare. L'oggetto Float può essere controllato per null come rappresentazione dell'oggetto di un tipo di dati float. Un oggetto Float è rappresentato da un maiuscolo F e il tipo di dati float ha un piccolo f. preforme Java autoboxing, il che significa che si può facilmente passare avanti e indietro tra i due, vale a dire:

float number = 0.56f; 
Float object = number; 

O viceversa:

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

È anche possibile passare un oggetto Float in un metodo dove è previsto un tipo di dati float o viceversa.

Se il controllo per il valore predefinito non funziona per qualsiasi motivo, questo consentirà di verificare uno Float per null.

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

Alcuni punti che potrebbero essere utili (Java 8).

L'oggetto mobile può essere assegnato a una primitiva mobile. Poi galleggiare primitivo può essere 0 controllati in questo modo:

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

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

Tuttavia, se l'oggetto galleggiante è nullo, di assegnarlo a un primitivo causerà NPE

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

Quindi state attenti qui

One più cosa, apparentemente puoi usare l'operatore == sull'oggetto Float, dato che si verifica l'autounboxing.

Float floatObj = new Float(0.0f); 

    if (floatObj == 0) { 
     System.out.println("floatObj is 0"); // will work 
    } 
Problemi correlati