Comment vérifier si un double est nulle?
J'interroge une base de données et certains des résultats que j'obtiens sont nuls. Je mets ces valeurs à une variable avec un type de données double. Appelons la variable "résultats". J'ai donc essayé de configurer une instruction if pour la voir égale à Null, ce qui n'a bien sûr pas fonctionné. Voici le code que j'ai pour cette instruction if:
if (results == null)
{
results = 0;
}
L'erreur que je reçois avec ce code est:
L'opérateur = = n'est pas défini pour le(S) Type (S) d'argument double, null
Est-il un meilleur moyen de déterminer si c'est nul?
6 réponses
Je recommanderais d'utiliser un Double pas un double comme type alors vous vérifiez contre null.
Tout d'abord, un Java double
ne peut pas être null et ne peut pas être comparé à un Java null
. (Le type double
est un type primitif (non-référence) et les types primitifs ne peuvent pas être null.)
Ensuite, si vous appelez ResultSet.getDouble(...)
, cela renvoie un double
pas un Double
, le comportement documenté est qu'un NULL (de la base de données) sera retourné comme zéro. (Voir javadoc lié ci-dessus.) Cela n'aide pas si Zéro est une valeur légitime pour cette colonne.
Donc vos options sont:
-
Utilisation
ResultSet.wasNull()
pour tester un (base de données) NULLE ... immédiatement après l'appelgetDouble(...)
, ou Utilisation
ResultSet.getObject(...)
, et de type cast le résultat deDouble
.
La méthode getObject
fournira la valeur en tant que Double
(en supposant que le type de colonne est double
), et est documenté pour retourner null
pour un NULL. (Pour plus d'informations, cette page documente les mappages par défaut des types SQL aux types Java, et donc type réel que vous devriez vous attendre à ce que getObject
Livre.)
Une double primitive en Java ne peut jamais être nulle. Il sera initialisé à 0.0 si aucune valeur n'a été donnée pour cela (sauf en déclarant une variable double locale et en n'attribuant pas de valeur, mais cela produira une erreur de compilation).
Plus d'informations sur les valeurs primitives par défaut ici .
Dire que quelque chose "est nul" signifie que c'est une référence à la valeur null. Les Primitives (int, double, float, etc.) ne sont par définition pas des types de référence, elles ne peuvent donc pas avoir de valeurs nulles. Vous devrez savoir ce que votre wrapper de base de données fera dans ce cas.
Comment obtenez-vous la valeur des "résultats"? Vous l'obtenez via ResultSet.getDouble ()? Dans ce cas, vous pouvez vérifier ResultSet.wasNull()
.