0

私のJavaコードは

String d="";
BasicDBObject dateq = null;
try {
    con.selectDB("test", "logData");

    dateq = new BasicDBObject("user_name", txtu);

    DBCursor searchDate = con.coll.find(dateq);
    //System.out.println(" "+ searchDate.next().get("login_date"));

    d=(String) searchDate.next().get("login_date");
    System.out.println("ddddddddddd"+d);
} catch (Exception e) {
    System.out.println("First time login");
}
System.out.println("login date" );
if (d == "") {
      BasicDBObject log = new BasicDBObject();
      log.put("user_name", txtu);

上記のコードでは、の値dは null です。私がそれを宣言するとき

String d=(String) searchDate.next().get("login_date"); 

それは正しい日付を与えますが、catch.I could not validate condition の外からはアクセスできませんif(d=="")。どんな助けでも

4

4 に答える 4

0

try catch ブロックの外側で変数 d を宣言したので、ブロックの外側で変数 d にアクセスできないということはありえません。d の値をブロックの外側に出力して、表示される正確なエラー/例外メッセージをお知らせください。変数「d」は外部からアクセスできないと想定しているようです。詳細な質問または例外メッセージは、クエリに対する非常に具体的な解決策を提供するのに役立ちます.

于 2013-07-29T07:09:37.803 に答える
0

またはif (d == "")に置き換えますif (d.length()==0)if (d.equals(""))

于 2013-07-29T07:04:13.447 に答える
0

変数 d は、ブロックの外でもアクセスできる必要があります。しかし、あなたのコードには他の問題があります。文字列に間違った比較演算子を使用しています。== の代わりに文字列比較に equals を使用します。コードの問題は次のとおりです。

if (d == "")

次のように変更します。

if ("".equals(d))

別の論理的な問題は、コード内の次のことです。

        d=(String) searchDate.next().get("login_date");

メソッドが nullをsearchDate返す可能性があるため、変数dが null に設定されます。しかし、あなたの d null チェックの比較は実際には間違っています:

if (d == "")

する必要があります

if (d == NULL)
于 2013-07-29T06:50:26.710 に答える