0

次の文字列があります: "no_questions_by_user"result という名前の変数に。

私がこのチェックを行うよりも:

if ( result != null && result.equals( "no_user_id" ) )
{
        Log.d( "Post execute: " , "NOOOT  OKKKK - no user id" );    
}
else
if ( result != null && result.equals( "database_error" ) )
{
        Log.d( "Post execute: " , "NOOOT  OKKKK - database error" );    
}
else
if ( result != null && result.equals( "no_questions_by_user" ) )
{           
        Log.d( "Post execute: " , "NOOOT  OKKKK - no questions by user so far" );   
}
else
{
  Log.d( "MyQuestionsActivity" , "In JSON parsing area.." );                
}

そして、それは常に最後のものに行きます。しかし、私の理解では、実際にはチェックするブロックに行く必要がありますresult.equals( "no_questions_by_user" )

そのブロックが実行されない理由は何ですか?

ありがとう!!

4

6 に答える 6

5

コードはよさそうです。変数resultには別の値が必要です。

私の推測では、結果文字列の末尾または先頭に空白がいくつかあると思います。

于 2012-04-12T12:15:27.237 に答える
5

個人的には、このコードはめちゃくちゃだと思います。

結果を受け取り、Map 内のメッセージを検索する 1 つのメソッドを作成します。テストで目が出血している場合のすべて:

private static final Map<String, String> LOG_MESSAGE_MAP;

static {
    LOG_MESSAGE_MAP = new HashMap<String, String>();
    // put all your result, message pairs in here
}

public void logResultDependentMessage(String result) {
    log.debug(LOG_MESSAGE_MAP.get(result));
}

新しい結果を追加すると、メッセージのペアは単にマップに挿入することを意味します。Spring のようなものを使用している場合は、構成でそれを行うことができ、コードには触れません。

于 2012-04-12T12:27:50.240 に答える
4

試す:

result.trim().equals( "no_questions_by_user" )
于 2012-04-12T12:16:42.113 に答える
3

デバッガーに「no_questions_by_user」が表示されましたか?

デバッガーではスペースを検出するのが難しいため、テストの前にトリミングを試みることができます。

于 2012-04-12T12:15:52.093 に答える
1

「結果」変数の値に空白が含まれていないことを確認してください。if ステートメントを入力する前に、このような行を出力できます。

System.out.println("The Value of result variable is=\"" + result + "\"");

あなたもこれをするかもしれません

if ( result != null && result.trim().equals( "no_questions_by_user" ) )
{           
        Log.d( "Post execute: " , "NOOOT  OKKKK - no questions by user so far" );   
}
于 2012-04-12T12:25:09.703 に答える
0

入力ミスを避けるために、いくつかの静的変数を使用して文字列を保存することをお勧めします。

于 2012-04-12T12:20:04.677 に答える