web-dev-qa-db-ja.com

doubleがnullかどうかを確認する方法は?

データベースにクエリを実行していますが、取得した結果の一部がnullです。これらの値を、データ型がdoubleの変数に設定しています。変数を「結果」と呼びましょう。だから私はもちろんそれがうまくいかなかったNullに等しいことを確認するためにif文を設定しようとしました。 ifステートメントのコードは次のとおりです。

if (results == null)
{
     results = 0;
}

このコードで発生するエラーは次のとおりです。

演算子==は、引数タイプdoubleに対して未定義、null

Nullかどうかを判断するより良い方法はありますか?

35
tylerbhughes

型としてdoubleではなくDoubleを使用することをお勧めします。その後、nullをチェックします。

35
Toby Samples

まず、a Java doubleはnullにできず、Java nullと比較できません。(double型はプリミティブ(非参照)型であり、プリミティブ型はnullにできません。)

次に、 ResultSet.getDouble(...) を呼び出すと、doubleではなく、Doubleが返されます。 NULL(データベースから)がゼロとして返されることです。 (上記のリンクされたjavadocを参照してください。)ゼロがその列の正当な値である場合、これは役に立ちません。

オプションは次のとおりです。

  • ResultSet.wasNull() を使用して、(データベース)NULL ... getDouble(...)呼び出しの直後にテストするか、または

  • ResultSet.getObject(...) を使用し、結果をDoubleに型キャストします。

getObjectメソッドは、値をDouble(列タイプがdoubleであると仮定)として配信し、NULLに対してnullを返すように文書化されています。 (詳細については、 このページ では、SQLタイプのデフォルトのマッピングJavaタイプ、したがって実際のタイプgetObjectが配信されることを期待してください。)

47
Stephen C

Javaのnullになることはありません。値が指定されていない場合は、0.0に初期化されます(ローカルdouble変数を宣言して値を割り当てない場合を除き、コンパイル時エラーを生成します)。

デフォルトのプリミティブ値に関する詳細情報 here

6
onit

「null」とは、null値への参照であることを意味します。プリミティブ(int、double、floatなど)は、定義により参照型ではないため、null値を持つことはできません。この場合、データベースラッパーが何をするかを調べる必要があります。

4
danben

「結果」の価値をどのように得ていますか? ResultSet.getDouble()で取得していますか?その場合、 ResultSet.wasNull() を確認できます。

4
RAY

単純にdouble変数の値を定義し、それと比較できます

例.

double var1= 0, var2=0;

if(var1!= 0 && var2!= 0 ){



}

これがお役に立てば幸いです!

0
Baljinder Maan