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().