2012-04-12 40 views
0

我有這個字符串:"no_questions_by_user"在一個名爲result的變量中。爲什麼等於可能不會返回true

比我做此項檢查:

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")

塊的任何想法爲什麼該塊沒有得到執行?

謝謝!

+8

打印出名爲result的字符串...... – NimChimpsky 2012-04-12 12:14:30

+2

'equals(...)如果兩個字符串不相同,將返回false。期。你的代碼中有一個bug。 – 2012-04-12 12:15:04

+0

我在那裏有調試語句,它顯示結果值是「no_questions_by_user」,這讓我困惑。 – GeekedOut 2012-04-12 12:15:56

回答

5

該代碼看起來不錯。您的變量result必須具有其他值。

我的猜測是在結果字符串的末尾或開頭處有一些空格。

+0

那就不對。你首先回答,以便系統讓我在10分鐘內接受答案。謝謝! – GeekedOut 2012-04-12 12:18:24

3

您是否在debbugger中看到「no_questions_by_user」?

在測試之前,您可以嘗試修剪它,因爲在調試器中很難檢測到空格。

4

嘗試:

result.trim().equals("no_questions_by_user") 
0

我建議你使用一些靜態變量來存儲你的字符串,讓你避免輸入錯誤。

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"); 
} 
5

我個人認爲,這個代碼是一個熱門一團糟。

我會寫一個方法,將結果帶入並在Map中查找消息。所有這些檢測是否使我的眼睛流血:

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的東西,你可以在配置時使用它,而不要觸摸代碼。

相關問題