2013-08-28 11 views
6

Wygląda na to, że jeśli chodzi o * value.getFloat ("Value_Quotient", quotient_Float) == null *, napotyka problem. Jak to naprawić?W języku Java, w jaki sposób można sprawdzić, czy zmienna zmiennopozycyjna ma wartość zerową?

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

Symbol 'float' nie może mieć wartości' null'. "Float" może mieć wartość 'null'. Czy Twój typ pierwotny lub typ odniesienia jest zmienny? –

+0

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

+0

To jest prymitywne. –

Odpowiedz

18

float jest rodzajem primitive dane, a nie object. Sprawdzanie wartości NULL jest używane dla obiektów. W przypadku prymitywów powinieneś użyć sprawdzania wartości domyślnych. Dla float wartość domyślna to 0.0f.

+0

[pierwotny typ danych] (http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) – CRUSADER

4

Istnieje również klasa Float, z której można korzystać. Obiekt Float może być sprawdzany pod kątem obiektu null jako reprezentacji obiektu typu danych float. Obiekt Float jest reprezentowany przez capitol F, a typ danych float ma małe f. preform Java autoboxing, co oznacza, że ​​można łatwo przełączyć się z powrotem i czwarty pomiędzy tymi dwoma, tj:

float number = 0.56f; 
Float object = number; 

Albo na odwrót:

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

Można również przekazać Float obiektu do metody gdzie oczekiwany jest typ danych float lub odwrotnie.

Jeśli sprawdzanie wartości domyślnej nie działa z jakiegokolwiek powodu, umożliwi to sprawdzenie wartości Float dla wartości null.

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

Niektóre punkty, które mogą być przydatne (Java 8).

Obiekt Float można przypisać do podstawowego elementu pływającego. Następnie unoszą prymitywny może być 0 sprawdzone tak:

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

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

Jednak jeśli obiekt Float jest null, niż przypisywanie go do prymitywne spowoduje NPE

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

więc być tutaj ostrożnym

One więcej, najwyraźniej możesz użyć operatora == na obiekcie Float, ponieważ dzieje się to automatycznie.

Float floatObj = new Float(0.0f); 

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